You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS15.1仅配置UNNotificationPresentationOptions的.sound选项时通知音不播放

iOS15 仅播放通知音不生效问题说明与解决方案

问题根因

该问题不是苹果官方永久禁止仅播放通知音的实现方式,属于iOS15专属的系统层面异常,该问题在iOS16及以上版本已经被官方修复,iOS14及更低版本也可正常运行。

可行解决方案

  • 方案1:系统版本适配
    针对不同系统版本做分支处理:
    • iOS14及更早、iOS16及更新版本:直接返回[.sound]即可正常触发提示音
    • iOS15版本:单独做兼容处理,使用AudioServicesPlaySystemSound直接播放系统/自定义音效
  • 方案2:iOS15兼容实现代码
    修改原有willPresent代理方法的逻辑,iOS15下独立调用音效播放接口,示例代码如下:
import AudioToolbox

func taskNotificationCenter(_ center: TaskNotificationCenterType,
               willPresent notification: UNNotificationType,
               withCompletionHandler completionHandler:
                @escaping (UNNotificationPresentationOptions) -> Void) {  
    if #available(iOS 16.0, *) || #available(iOS 15.0, *) == false {
        completionHandler([.sound])
    } else {
        // iOS15单独处理,1007为默认通知音效ID,也可替换为自定义音效对应的ID
        AudioServicesPlaySystemSound(1007)
        // 不返回任何展示选项,避免出现通知横幅、角标
        completionHandler([])
    }
}

注:如果需要播放自定义音效,可将自定义音效文件注册为SystemSoundID后再调用播放接口。

  • 方案3:低侵入折衷方案
    如果不想引入独立的音效播放逻辑,也可以在iOS15下返回[.sound, .banner],同时设置通知内容的title、body为空字符串,此时通知横幅会一闪而过几乎无感知,也能正常播放通知音。

内容的提问来源于stack exchange,提问作者Luciano Perez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:36:07