iOS DND模式下Geofence与startMonitoringSignificantLocationChanges无响应问题
iOS 15 DND模式下应用被杀死后位置监控回调失效问题说明
这个问题是iOS 15.0-15.1版本的已知系统Bug,大量开发者都反馈过相同的复现场景,不属于应用代码配置错误。
触发条件确认
- 设备运行iOS 15.0或iOS 15.1正式版系统
- 开启了免打扰(DND)模式(含专注模式下的免打扰子类)
- 应用已被手动杀死或被系统后台回收
- 已正确申请「始终允许」位置权限,且注册了
Geofence地理围栏监控,或调用了startMonitoringSignificantLocationChanges方法
根本原因
iOS 15.0的系统服务逻辑错误,免打扰模式开启后会错误拦截位置事件的应用唤醒路由,即使位置事件触发也不会主动拉起被杀的应用执行对应的回调方法,和应用本身的后台权限配置无关。
修复/规避方案
- 临时用户侧规避:引导用户将你的应用添加到免打扰模式的允许列表,路径为「设置 > 专注 > 免打扰 > 允许的App」,添加后即可正常接收位置事件回调
- 系统版本修复:苹果在iOS 15.2正式版中已经修复了该问题,用户升级系统后故障会自动消失
- 应用侧兼容:如果需要覆盖iOS 15.0/15.1的用户,可以在应用首次启动获取位置权限时,检测当前系统版本,如果属于故障版本,弹窗提示用户完成上述允许列表配置,降低漏触发概率
内容的提问来源于stack exchange,提问作者Yiling
相关产品推荐
相关产品推荐

