图片来源:Google地图
请求之前的教程
可以在请求之前提供一张背景图,对权限请求做出解释。Foursquare就用了一张背景图来解释为何应用需要这项特殊权限。
在真正的请求之前“预先”请求
iOS的默认请求,每个功能只能触发一次。最坏的情况就是用户拒绝了系统权限,因为在iOS中要找回那个权限非常复杂。多数情况下,最好是“预先”请求用户允许,然后在放出真实的iOS权限获取提示。
Cluster就是个预先请求的例子。Cluster的流程中包含了一个情景创建界面、一个预先请求、然后才是最终的权限请求。使用预先请求对话框,几乎彻底解决了Cluster的“不允许”问题。
“预先请求”是一种预先的教育型权限对话框。
在操作情景中请求权限
用户触发的对话框甚至比情景创建界面更有效,因为用户盼着请求出现,更愿意允许权限获取,他们想要使用这个功能。等到需要某个功能时再请求权限。例如当用户点按Cluster中的相机时,才会触发相机的权限。
在用户尝试使用这项功能时,才提醒用户允许权限。图片来源:Cluster
如何处理被拒绝的权限
由于拒绝权限可能会导致某个功能无法按照预期使用,当权限被拒绝时,应当向用户做出解释。
简单的原则:当权限被拒绝时应当提供反馈。
关键权限
如果由于关键权限被拒绝,导致应用无法运行,要解释这项权限为何需要,提供一个链接打开设置界面,然用户开启它。
下面的例子是Google环聊界面,解释了应用正常运转所需的权限。