H4.10.2detect out-of-band permission revocation设计

权限被系统设置直接撤销时应用需要主动检测并降级

别名: 系统撤权 · 权限失效检测 · settings revoke · permission change listener

概念解释

人可以在应用不在场时,于系统设置里关掉权限。回到应用时,产品必须自己发现授权已经没了,并切到拒绝后的降级:停止调用、改用手输或文件、说明当前不可用——而不是继续转圈、崩溃、或展示过期的通讯录。这条谈的是应用外撤权的检测与接上降级,不是首次弹窗被点拒绝时主路径还通不通。

机制

授权状态活在操作系统里,应用进程里的缓存会过期。人在设置里关掉,应用的内存、磁盘、界面模型仍可能写着「已允许」。下一次读取会收到空数据或异常;若没有主动核对,失败表现成网络故障或「功能坏了」。检测要把生命周期接上:进入前台、回到该功能、恢复后台会话之前,重新问系统「现在还允许吗」。漏检的典型场面是:地图还在跟已经失效的坐标、相机预览黑屏却没有原因、推送开关在应用内仍显示开启。

边界

系统在撤权时会杀掉某些后台会话(尤其是相机),应用可能来不及写完自己的检测逻辑,仍应在下一次前台给出降级,而不是等下一次冷启动。被管理设备由策略撤权,检测后应显示「由组织关闭」,不要引导去一个改不了的开关。一次性授权过期不是「系统设置里的撤销」,应按仅本次结束来收尾,不要当成故障。

怎么落地

  • 在进入前台与打开依赖权限的屏幕时读取系统当前授权;与本地缓存不一致则立刻改状态并停止相关 API。
  • 检测到撤权后走与「弹窗拒绝」同一套降级界面,不要另做一种未说明的错误页。
  • 应用内开关必须跟系统状态对齐;系统已关时,应用内不得仍显示开启。
  • 验证:应用在前台授权成功后切到后台,在系统设置关掉该权限,再回到应用进入该功能。应在一秒内看到降级说明且无崩溃、无无限转圈。把这一段做成从后台与从杀进程两条回归。

延伸

  • 同组H4.10.1 系统级使用中指示器与应用内权限设置入口承担不同的可见职责 · H4.10.3 权限状态显示与功能实际可用性脱节会让用户误判故障原因 · H4.10.4 首次安装后长期未使用的权限应提示用户复核是否仍需保留
  • 相邻H4.03 拒绝后的降级 · H4.04 权限的可撤回 · H3.09 崩溃与离线恢复
  • 站内检索permission revoked · settings change · out-of-band revoke

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/H4.10.2