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

iOS 16中点击「保留」后临时推送权限未更新问题排查

iOS 16 临时推送权限(Provisional)交互异常问题解答

问题背景

我们为应用开发了临时推送权限功能,但在iOS 16中测试发现其未按预期工作。当前请求权限的代码如下:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound, .provisional]) { [weak self] _, _ in
    // here we register for pushes in case authorizationStatus is provisional or authorised
}

实际现象:首次通知带有「保留」操作按钮,点击后弹出「Deliver Immediately」选项,但用户选择该选项后,设置中推送仍标记为「Deliver Quietly」,声音、徽章、锁屏及横幅权限仍处于关闭状态,权限设置未发生任何变更。

问题原因

这是iOS 16的系统行为变更,既不是系统Bug,也不是代码配置遗漏:

  • iOS 16调整了临时推送权限的交互逻辑:用户点击「保留」→「Deliver Immediately」,仅作用于当前这条通知,让它从静默状态转为立即展示,并不会直接将权限从provisional(临时)升级为authorized(完全授权)。
  • 临时权限的设计初衷是让用户无需主动授权就能接收通知,但默认静默送达;只有当用户多次主动与通知交互(比如多次点击「Deliver Immediately」,或手动进入设置开启权限),系统才会触发正式的授权弹窗,让用户选择是否开启完整的推送权限。

代码与逻辑优化建议

  • 不要依赖一次交互就完成权限升级,当前代码的权限请求逻辑本身是正确的,但回调中仅通过authorizationStatus判断是否注册推送的逻辑需要注意:即使用户点击了Deliver Immediately,authorizationStatus仍会保持为.provisional,不会立刻变为.authorized。
  • 可以在用户点击Deliver Immediately后,在App内添加友好提示,引导用户如果需要持续接收正常推送,可前往系统设置手动开启完整权限。
  • 确保正确实现UNUserNotificationCenterDelegate的相关方法,处理通知交互事件,适配iOS 16的新规则。

内容的提问来源于stack exchange,提问作者Ledio Bidaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:35:04