在家闲着无事,大家可以跟着站长来学学怎么设计
授权机制,是手机操作系统安全机制中的一部分,在开发应用时需要用到各种各样的手机系统权限。那在我们的 APP 中,它的授权该如何设计,才能让用户同意授权,或者不反感授权呢?
授权机制,是手机操作系统安全机制中的一部分,在开发应用时需要用到各种各样的手机系统权限。
一般来说,在操作系统中权限会被分类,有些权限级别较低,应用只需在开发时声明即可使用;而与用户有关的权限级别都非常高,需要用户亲自授权才可以。
我们的产品中的功能经常会涉及到这些权限,为了能使应用正常使用,从而给用户带来更好的体验,我们希望用户都能授予我们相关权限。
iOS 需要用户授权的权限有下面两种。
涉及到用户隐私的权限:
系统服务权限:
两种权限的区别:
涉及到用户隐私的授权弹窗中,可以添加简短的自定义的向用户解释说明的语句;而系统服务权限弹窗不可以添加说明,有系统的固定提示语。
注意:
Android 中需要用户授权的权限:
Android6.0 后有普通权限和危险权限之分,需要用户授权的权限是危险权限。危险权限共有9个权限组,每个权限组又包括若干子项,在授权时只要用户对一个权限组的任意一个子项授权,则整个权限组都被视为授权。
9个权限组分别为:日历、相机、通讯录、定位、麦克风(用于录音)、电话(一般用于读取本机识别码)、传感器 SMS(短信)、存储。
iOS 与 Android 权限的区别:
在 iOS 和 Android 中对不同的权限需不需要用户授权,划分不一样。
比如:iOS 中最常见的通知权限和网络权限,都需要用户授权才能使用;而这两项权限在 Android 中则不需要用户授权,所以 Android 手机总是有很多弹窗,还有相册权限在 Android 中,也是不需要授权的。
具体两者有何区别,可以结合上面给出的图自行对照,总的对比下来感觉 iOS 对于用户的保护是更到位的。
要注意的是,像我们刚才所说的网络访问和通知权限,并没有在 Android 列表中列出,但这不代表 Android 中没有这两个权限,只是不需要用户授权而已。
知道了 iOS 和 Android 的权限区别后,我们在设计时就知道同一项权限,需不需要针对两个系统分别做设计了。
Android 和 iOS 的常用授权都一样,只不过 Android 不需要网络和通知权限,不需要授权相册。
在 Android 中所有的系统授权弹窗,都是不能添加说明的;而在 iOS 中涉及到用户隐私的权限,在请求授权时都可以添加简单的说明。
看似区别不大,但是对于用户的体验来说,iOS 显然更胜一筹。
Android 的系统授权框可以出现多次,第一次用户进入应用后,如果没有授权给应用的话,那么下次当用户再次进入应用时,应用还可以调用系统授权框,让用户授权。
在 iOS 中系统授权框自始自终只会出现一次,如果用户点击不允许授权,则以后只能通过给用户提供去设置按钮,让用户自行打开权限开关。
使用系统授权框让用户授权的好处:
通过系统提示框让用户授权,用户只用点击一下就可以授权成功,而通过去设置去开启权限步骤,会需要用户经过两三个步骤才能开启,比较繁琐。
如果没有让用户在第一次授权成功,以后让用户授权成功的可能性更低,所以我们需要珍惜第一次机会,争取让用户一次性授权成功。
虽然 Android 可以在下次用户进入应用时,再次调用系统授权框,可是如果用户第一次都不给你授权,以后又凭什么给你呢?
所以不管是 iOS 还是 Android,在第一次弹窗出现时,拿到用户的授权都是非常重要的。
Android 阵营中不同手机厂商的系统,在授权时的机制都不一样。
比如:作为 Android 系统危险权限的存储权限,在 oppo 的 ColorOS 系统中就是向所有应用开放的,不用通过用户的授权,还有弹窗弹出次数的限制等。
在 oppo 中竟然可以一直给用户弹出授权框,知道授权成功为止,如果进一步为了用户体验的提高,我们可以为不同的手机厂商做定制化处理。
本文中按照适合大部分安卓手机的情况做介绍。
我们设计的应用中,往往一些功能需要用户给予相应权限,才能正常运行,这样才能为用户正常服务,给用户带来良好的体验。
这些因素导致了我们真正需要一些权限的时候,用户不再信任我们,导致我们软件中的正常功能获取不到权限,不能为用户提供良好的体验。
梳理一遍应用中的功能,或者和开发沟通,确定我们都需要哪些系统权限,我们需要做到下面两点:
在第一次打开应用时申请权限的劣势:
接下来看看什么样的权限,应该放在第一次打开应用的时候去申请?
第一次打开应用
网络权限(Android 不用设计):
在进入时获取网络权限,这没什么好说的,没有网络权限我们什么也搞不了,直接调用系统授权框即可。
通知权限(Android 不用设计):
这里我的建议就是,对于那些有过硬理由的通讯类应用来说,是可以在一开始请求获取通知权限的;对于没有过硬理由的应用来说,尽量找出那些用户需要用到通知服务的场景,在那时再弹出授权框。
原因是刚才说到了,在一开始去请求授权有两个劣势,但是对于那种有过硬理由的应用来说,不在一开始申请到的话,会对应用有比较大的影响。
而第二个问题对于这种应用来说不用担心,对于没有过硬理由的应用来说,不申请到通知权限也不影响主要功能,所以没必要冒风险在一开始去申请。且等到用户遇到了需要被提醒的场景,再弹出授权框,肯定比一开始没有关联场景去申请要强得多。
没有就会影响到正常使用的权限:
比如:对于照相类应用,如果在一开始没有拿到相机权限,那么进入应用后就会是黑屏,所以拍照权限就应该放到一开始去获取。
注意:对于这种应用来说,获取相机权限就够了,相册权限也不要放到一开始去获取。
再举个例子:百度云网盘在第一次打开时,也会提示你授予通讯录权限,为什么呢?因为百度云要帮你把通讯录信息同步到网盘中,如果不给权限的话,就没法同步。当然你也可以选择不同步通讯录,所以也会在一开始去向用户申请。
使用到相关功能时
刚才我们已经解决了,哪些功能需要放到第一次打开应用的时候去申请。那么除了这些权限,剩下的就是属于在用户使用到相关功能的时候再去申请的权限了。
这些权限大部分都和授权场景有比较强的关联性,放在特定的授权场景触发是更好的选择。但这里也不是说,放在后面弹出弹窗的权限,一定都有比较强的场景关联性。
最主要的是,如果你没有过硬的理由放在前面弹出,那就放在后面弹出吧。
对于这类权限,这时候我们需要做一件事——找出需要用到这些权限的所有功能的触发点。
比如:对于相机权限,那么触发场景有可能是拍照,有可能是扫一扫,触发点就是点击拍照按钮的那一刻,点击扫一扫按钮的那一刻,在这些触发点中,都要能触发授权弹窗。
什么是 pre-permission
pre-permission 简单说就是预授权,在系统授权弹窗出现以前,先弹出我们的自定义弹窗,甚至是页面。我们可以用我们的自定义弹窗,来测试用户是否想给我们授权?
如果用户点击了我们自定义弹窗中的授权按钮,我们再弹出系统授权弹窗,如果用户不想在此时授权,则我们可以在后面合适的情况下,再次让用户给我们授权。
这样相当于加了一层保险,只有当用户想给你授权的时候,才弹出系统授权弹窗,避免了用户点击了系统授权框的不允许后,造成再次授权的成本增高的问题。
pre-permission 这种设计方式出现的背景
这个方法出现在 iOS 早期版本,那时的 iOS 系统权限管理方面,没有现在这么完善。当用户关闭了系统的授权框后,如果需要再打开相关权限,就只能通过手动去设置页自己开启权限,整个过程需要五六个步骤,大大提升了用户的开启成本。
如果用户在第一次拒绝了应用的授权请求时,如果再想让用户打开相关权限就非常困难。
pre-permission 有什么用
现在的 iOS 系统,在用户拒绝授权后,我们可以在下次出现的自定义弹窗中加入去设置按钮,用户只需要两三步就可以授权成功。
最重要的是。以前用户很容易找不到在哪里去开启权限,而现在我们可以直接将用户引到到授权页,用户点击授权即可。可以说有了去设置这个按钮后,用户再次打开权限的成本大大降低,而 pre-permission 当初出现的原因,正是为了解决再次打开权限的成本高的问题。
那么是不是说 pre-permission 这种方式已经过时了呢?
答案当然是:没过时。
首先虽然现在的再次授权成本大大降低,但毕竟还是没有系统授权框的授权体验好。
但是最重要的不是这个,最重要的是:当用户不能很好的理解我们为什么需要授权的时候,我们可以在预授权的提示框中加入详细的说明,从而达到用户给我们授权的目的。
哪些权限需要 pre-permission
其实大部分的权限获取,通过系统自带的授权框都能解决问题。比如:相机、相册、定位等。
这些权限的特点是和授权场景的关联性很强,只需要简单的文字用户就能理解我们需要权限干什么;用户理解后一般就会授予我们权限,如果用户不给我们权限的话,就不能使用相关功能。
比如:他要修图,却不给我们相册权限,之后当用户发现没有权限不能修图后,自然会给我们权限,所以这些权限一般不用担心。
比较特殊的是通知权限和通讯录权限。
我们先来说通知权限。
先说结论:如果通知权限对应用影响很大,一定要加 pre-permission。如果通知权限只是给用户提供一种便利,没有也影响不大。比如:淘宝、京东这些,可加可不加。
原因:通知权限几乎是每个应用都想拿到的权限,对于有些应用来说,通知权限是一个很重要的权限。
比如:通讯类软件,消息需要实时的传达给用户,如果没有通知权限,对于应用的影响是非常大的,这类应用比较少。
而对于其他应用来说,通知权限只是为了增加用户体验的一个方式而已,拿到最好,拿不到也无关痛痒。
还有些应用拿到通知权限,就是为了给用户发一些没用的信息,而不考虑用户的感受,这种应用很多,拿不到也就算了。
于是这就造成了一个问题:现在的用户一般都不想给应用通知权限,用户的感觉就是给了通知权限就会被不断的弹窗骚扰,再加上很多应用,都是用户刚一打开应用就让用户授予通知权限。而 iOS 中的通知框又不能添加说明文字,不能向用户说明应用获取通知权限的目的,所以大部分用户很多时候一看到通知权限就会下意识的不授予。一旦用户不授予通知权限,我们也不能像相机、相册、定位这样的权限一样,通过不让用户使用相关功能的方式,来再次提示用户去打开权限。因为即使没有通知权限,应用一定是可以正常运行的,于是拿到通知权限变成了一件非常难的事。
关键的问题是:有些应用拿不到就拿不到了,而对于有的应用的影响是非常大的,甚至是致命的。这些应用不会去骚扰用户,但是也被用户误解了。
所以对于这种应用来说,就需要一种方式来避免被用户误解,向用户说明需要通知权限去做什么,尽最大可能性拿到通知权限,那么 pre-permission 也就再次派上了用场。
再来说说通讯录权限。
结论:不管什么应用,在申请通讯录权限时,最好都加上 pre-permission。
原因:在所有的权限中,哪个权限是用户感觉最涉及隐私的——大部分用户都会认为是通讯录权限。
除非你的应用像微信,QQ 这类让用户有足够安全感的应用,否则一般情况下用户都不会随便授予你通讯录权限。现在用户动不动收到诈骗短信,诈骗电话,谁知道是不是你们这种不靠谱的公司泄露出去的。
即使是大公司,现在都不能让用户放心了,最近爆出的 Facebook 泄露用户个人信息很好的说明了问题。
所以获取通讯录权限也比较难,通讯录权限和通知权限有些地方很像,如果用户决定了不授予你通讯录权限,你之后再想获取到这些权限就比较难。所以对于通讯录权限来说,通过 pre-permission 的方式来获取也比较好。
对于其他权限的来说,如果你想更加充分的向用户去说明也是可以用的,这里就不再多说。
在 Android 中怎么设计
Android 中的弹窗都不能添加说明文字,是不是就应该都添加 pre-permission 呢?实际上不是。
首先在之前我们说到过,Android 中的系统授权框可以不止一次的弹出来(下次进入应用时),所以用户再次授权成本更低。
其次,大部分的授权我们也提到过,像相机、相册、定位这种,用户已经被各种应用教育的非常好了,基本都会给你权限,不给的话相关功能也用不了。
所以实际上在 Android 中和 iOS 中情况差不多,主要针对通知和通讯录权限来使用 pre-permission,但是 Android 中通知权限不用通过用户授权,所以我们只要在申请通讯录权限的时候加上 pre-permission 即可。
pre-permission 被拒
添加了 pre-permisson 也不是万能的,也会被用户拒绝。
而通知和通讯录权限,不像定位,相机权限,可以在用户进入相关页面时提示功能不能用。
若要使用相关功能就得打开权限,对于这种情况我们怎么办呢?
拿通知举例,我们就要在用户需要被提醒的时候,来提醒用户打开通知。如果用户真的需要被通知,那么自然会授予我们权限。
如果是通讯录呢?
那就在添加好友的时候提醒,要注意的是这种提示不是用弹窗的方式,这样有骚扰用户的嫌疑。
网络授权框被拒
用户关闭了网络授权后,系统会在下一次用户进入应用时,自动弹出已经关闭网络权限的提示框,应用只需按照断网情况处理即可。
西瓜视频在断网后为用户分析了不同的可能性,并且在检查网络权限这里添加了设置按钮。用户可以很方便的检查网络是否关闭,这样的设计可以说是非常棒了,大多数的应用在断网后的设计都没有这么细致。
系统授权框被拒
在用户拒绝我们后,立即提示用户若要使用相关功能就得打开相关权限,并且在该权限的每个触发点都加入弹窗提示,同时给用户一个去设置的按钮。这里要注意的是,用户点击去设置后,要直接将用户送到应用的授权界面,不要让用户去找。
提示的方式有两种:弹窗提示、整页提示。
如果你需要授权的功能,不需要占用整个页面就用弹窗提示;如果该功能需要占用整个页面,那么就用整页提示。
首先,iOS 中网络授权框和通知授权框中的文字是固定的,不能自定义。
pre-permission 中的文案
由于 pre-permission 的优势,我们可以充分的向用户说明:
结合图片文字的方式说清楚我们要获取这个权限做什么用?如果你不给我们权限会怎样?打消用户的疑虑,如果是通讯录权限就说明白我们不会侵犯你的隐私,您可以随时关闭该权限;如果是通知权限就说明白我们不会骚扰你,前面给出的 VUE 的预授权弹窗中,就专门强调了不会打扰用户,这点很好。
第一次 iOS 系统授权提示框出现时的文案
说明白,如果不给我们权限你将不能使用什么功能,个人认为「你不能做什么」这种方式要比「我要为你做什么更好」。
被拒绝后提示框中的文案
您还尚未开启某权限,所以不能使用该功能,请开启权限。
这篇文章写得比较长,希望的是大家看完后不光知道怎么去设计 App 授权,更知道为什么这么设计,这样当遇到不同的情景的时候才能灵活处理。
最后我们以一个例子来收尾,假设我们的应用是一款小视频类软件。
第一步:找出所有应用中用到的权限,分为 iOS 需要的授权和 Android 需要的授权
第二步:针对每一个权限做设计
接下来我们以 iOS 下的相机权限为例:
1. 什么时候弹出?
用户点击录制视频时弹出。
2. 要不要 pre-permission?
不要,所需权限与场景关联性很强,利用系统提示框中的自定义文字即可。
3. 如果用户拒绝了怎么办?
点击拒绝后和下次进入时,利用整页去提示用户,并添加去设置按钮。
4. 文案:(简单示范,大家可以写的更好一点)
作者:程远
链接:https://www.uisdc.com/app-authorization-design
今天就分享到这里啦~~
如果有任何关于设计的问题
都可以添加Q群和大家一起讨论哟!
QQ群:748077013
推荐阅读:查找我的iphone在哪里