H4.04.3re-prompt requires a fresh user action设计

重新申请需要新的用户动作

别名: 重新申请 · 再次授权 · fresh user action · re-request permission

概念解释

权限被拒绝或被撤回之后,下一次系统授权弹窗必须跟在一个新的、可识别的用户动作后面:再次点了「拍摄」、再次点了「开启通知」、从设置里点了「去打开」。后台恢复、冷启动、列表刷新、定时器到时,都不能自行把弹窗叫回来。这条是重新申请的触发条件,不是禁止一切再次询问,也不是把同一次拒绝连弹多次的骚扰本身。

机制

平台把无动作的二次弹窗视为绕过「记住拒绝」。应用侧若在 onResume、推送回调或心跳里调权限 API,等于把撤回写成暂时的。要求新动作,是把授权重新接回「人正在要这项功能」:动作提供了新的情境,也提供了可放弃的点(不点就不再问)。没有这道闸,撤回和拒绝都只是推迟下一次打断,可撤回在时间上不成立。

边界

系统自己弹出的设置变更说明、或用户从系统设置打开权限后回到应用,不属于应用发起的重新申请。操作系统在「仅本次」过期后于下一次使用再问,那是平台语义,仍应落在用户再次使用该功能时,而不是应用在空闲时预问。无障碍辅助或车机投屏若由系统代发权限请求,动作归属要按平台计,不能因此在应用里再叠一张。

怎么落地

  • 拒绝或撤回之后,把该权限标为「需新动作」;只有明确绑定该能力的控件被激活才调用系统 API。
  • 重新申请的控件文案写正在做的事(「拍摄收据」「用位置导航」),不要写「重新授权」。
  • 禁止在应用进入前台、网络重连、广告 SDK 初始化时附带权限请求。
  • 验证:拒绝一项权限,然后只做浏览、下拉刷新、切后台再回来。不应出现系统弹窗。再点该功能入口,弹窗可以出现一次。把这段操作做成自动化回归,冷启动与推送唤醒必须包含在脚本里。

延伸

  • 同组H4.04.1 应用内需提供权限状态与跳转入口 · H4.04.2 撤回后需清理已获取数据
  • 相邻H4.03 拒绝后的降级 · H4.01 请求时机 · O2.06 同意界面的设计与滥用
  • 站内检索fresh user action · permission re-request · revocation

同组卡片

快捷操作

分享

分享当前页面

ios_share

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