授權機制,是手機操作系統(tǒng)安全機制中的一部分,在開發(fā)應用時需要用到各種各樣的手機系統(tǒng)權限。那在我們的 APP 中,它的授權該如何設計,才能讓用戶同意授權,或者不反感授權呢?
本文大綱圖:
一、認識授權
1. 什么是授權
授權機制,是手機操作系統(tǒng)安全機制中的一部分,在開發(fā)應用時需要用到各種各樣的手機系統(tǒng)權限。
一般來說,在操作系統(tǒng)中權限會被分類,有些權限級別較低,應用只需在開發(fā)時聲明即可使用;而與用戶有關的權限級別都非常高,需要用戶親自授權才可以。
我們的產品中的功能經常會涉及到這些權限,為了能使應用正常使用,從而給用戶帶來更好的體驗,我們希望用戶都能授予我們相關權限。
2. 需要用戶授權的權限有哪些
iOS 需要用戶授權的權限有下面兩種。
涉及到用戶隱私的權限:
系統(tǒng)服務權限:
兩種權限的區(qū)別:
涉及到用戶隱私的授權彈窗中,可以添加簡短的自定義的向用戶解釋說明的語句;而系統(tǒng)服務權限彈窗不可以添加說明,有系統(tǒng)的固定提示語。
注意:
Android 中需要用戶授權的權限:
Android6.0 后有普通權限和危險權限之分,需要用戶授權的權限是危險權限。危險權限共有9個權限組,每個權限組又包括若干子項,在授權時只要用戶對一個權限組的任意一個子項授權,則整個權限組都被視為授權。
9個權限組分別為:日歷、相機、通訊錄、定位、麥克風(用于錄音)、電話(一般用于讀取本機識別碼)、傳感器 SMS(短信)、存儲。
iOS 與 Android 權限的區(qū)別:
在 iOS 和 Android 中對不同的權限需不需要用戶授權,劃分不一樣。
比如:iOS 中最常見的通知權限和網絡權限,都需要用戶授權才能使用;而這兩項權限在 Android 中則不需要用戶授權,所以 Android 手機總是有很多彈窗,還有相冊權限在 Android 中,也是不需要授權的。
具體兩者有何區(qū)別,可以結合上面給出的圖自行對照,總的對比下來感覺 iOS 對于用戶的保護是更到位的。
要注意的是,像我們剛才所說的網絡訪問和通知權限,并沒有在 Android 列表中列出,但這不代表 Android 中沒有這兩個權限,只是不需要用戶授權而已。
知道了 iOS 和 Android 的權限區(qū)別后,我們在設計時就知道同一項權限,需不需要針對兩個系統(tǒng)分別做設計了。
3. 常用授權
第一梯隊:網絡,通知,位置。
第二梯隊:通訊錄,相冊,相機,麥克風等。
Android 和 iOS 的常用授權都一樣,只不過 Android 不需要網絡和通知權限,不需要授權相冊。
4. iOS 和 Android 在設計授權時的區(qū)別
在 Android 中所有的系統(tǒng)授權彈窗,都是不能添加說明的;而在 iOS 中涉及到用戶隱私的權限,在請求授權時都可以添加簡單的說明。
看似區(qū)別不大,但是對于用戶的體驗來說,iOS 顯然更勝一籌。
Android 的系統(tǒng)授權框可以出現(xiàn)多次,第一次用戶進入應用后,如果沒有授權給應用的話,那么下次當用戶再次進入應用時,應用還可以調用系統(tǒng)授權框,讓用戶授權。
在 iOS 中系統(tǒng)授權框自始自終只會出現(xiàn)一次,如果用戶點擊不允許授權,則以后只能通過給用戶提供去設置按鈕,讓用戶自行打開權限開關。
使用系統(tǒng)授權框讓用戶授權的好處:
通過系統(tǒng)提示框讓用戶授權,用戶只用點擊一下就可以授權成功,而通過去設置去開啟權限步驟,會需要用戶經過兩三個步驟才能開啟,比較繁瑣。
如果沒有讓用戶在第一次授權成功,以后讓用戶授權成功的可能性更低,所以我們需要珍惜第一次機會,爭取讓用戶一次性授權成功。
雖然 Android 可以在下次用戶進入應用時,再次調用系統(tǒng)授權框,可是如果用戶第一次都不給你授權,以后又憑什么給你呢?
所以不管是 iOS 還是 Android,在第一次彈窗出現(xiàn)時,拿到用戶的授權都是非常重要的。
Android 陣營中不同手機廠商的系統(tǒng),在授權時的機制都不一樣。
比如:作為 Android 系統(tǒng)危險權限的存儲權限,在 oppo 的 ColorOS 系統(tǒng)中就是向所有應用開放的,不用通過用戶的授權,還有彈窗彈出次數(shù)的限制等。
在 oppo 中竟然可以一直給用戶彈出授權框,知道授權成功為止,如果進一步為了用戶體驗的提高,我們可以為不同的手機廠商做定制化處理。
本文中按照適合大部分安卓手機的情況做介紹。
5. 為什么要讓用戶給我們授權
我們設計的應用中,往往一些功能需要用戶給予相應權限,才能正常運行,這樣才能為用戶正常服務,給用戶帶來良好的體驗。
6. 用戶授權過程中存在的問題
很多應用,會向用戶申請一些與功能關系不大的權限,導致用戶對所有軟件的信任度很低。
應用拿到通知權限以后為所欲為,經常向用戶發(fā)一些廣告,沒用的信息,騷擾用戶。
應用在向用戶申請權限的時候,沒有說清楚需要權限做什么用。
這些因素導致了我們真正需要一些權限的時候,用戶不再信任我們,導致我們軟件中的正常功能獲取不到權限,不能為用戶提供良好的體驗。
二、如何針對授權做設計
第一步:確定應用中需要用到哪些權限
梳理一遍應用中的功能,或者和開發(fā)溝通,確定我們都需要哪些系統(tǒng)權限,我們需要做到下面兩點:
第二步:針對每一個權限做下列設計
1. 設定系統(tǒng)彈窗彈出時機
在第一次打開應用時申請權限的劣勢:
接下來看看什么樣的權限,應該放在第一次打開應用的時候去申請?
第一次打開應用
網絡權限(Android 不用設計):
在進入時獲取網絡權限,這沒什么好說的,沒有網絡權限我們什么也搞不了,直接調用系統(tǒng)授權框即可。
通知權限(Android 不用設計):
這里我的建議就是,對于那些有過硬理由的通訊類應用來說,是可以在一開始請求獲取通知權限的;對于沒有過硬理由的應用來說,盡量找出那些用戶需要用到通知服務的場景,在那時再彈出授權框。
原因是剛才說到了,在一開始去請求授權有兩個劣勢,但是對于那種有過硬理由的應用來說,不在一開始申請到的話,會對應用有比較大的影響。
而第二個問題對于這種應用來說不用擔心,對于沒有過硬理由的應用來說,不申請到通知權限也不影響主要功能,所以沒必要冒風險在一開始去申請。且等到用戶遇到了需要被提醒的場景,再彈出授權框,肯定比一開始沒有關聯(lián)場景去申請要強得多。
沒有就會影響到正常使用的權限:
比如:對于照相類應用,如果在一開始沒有拿到相機權限,那么進入應用后就會是黑屏,所以拍照權限就應該放到一開始去獲取。
注意:對于這種應用來說,獲取相機權限就夠了,相冊權限也不要放到一開始去獲取。
再舉個例子:百度云網盤在第一次打開時,也會提示你授予通訊錄權限,為什么呢?因為百度云要幫你把通訊錄信息同步到網盤中,如果不給權限的話,就沒法同步。當然你也可以選擇不同步通訊錄,所以也會在一開始去向用戶申請。
使用到相關功能時
剛才我們已經解決了,哪些功能需要放到第一次打開應用的時候去申請。那么除了這些權限,剩下的就是屬于在用戶使用到相關功能的時候再去申請的權限了。
這些權限大部分都和授權場景有比較強的關聯(lián)性,放在特定的授權場景觸發(fā)是更好的選擇。但這里也不是說,放在后面彈出彈窗的權限,一定都有比較強的場景關聯(lián)性。
最主要的是,如果你沒有過硬的理由放在前面彈出,那就放在后面彈出吧。
對于這類權限,這時候我們需要做一件事——找出需要用到這些權限的所有功能的觸發(fā)點。
比如:對于相機權限,那么觸發(fā)場景有可能是拍照,有可能是掃一掃,觸發(fā)點就是點擊拍照按鈕的那一刻,點擊掃一掃按鈕的那一刻,在這些觸發(fā)點中,都要能觸發(fā)授權彈窗。
2. 是否需要 pre-permission
什么是 pre-permission
pre-permission 簡單說就是預授權,在系統(tǒng)授權彈窗出現(xiàn)以前,先彈出我們的自定義彈窗,甚至是頁面。我們可以用我們的自定義彈窗,來測試用戶是否想給我們授權?
如果用戶點擊了我們自定義彈窗中的授權按鈕,我們再彈出系統(tǒng)授權彈窗,如果用戶不想在此時授權,則我們可以在后面合適的情況下,再次讓用戶給我們授權。
這樣相當于加了一層保險,只有當用戶想給你授權的時候,才彈出系統(tǒng)授權彈窗,避免了用戶點擊了系統(tǒng)授權框的不允許后,造成再次授權的成本增高的問題。
pre-permission 這種設計方式出現(xiàn)的背景
這個方法出現(xiàn)在 iOS 早期版本,那時的 iOS 系統(tǒng)權限管理方面,沒有現(xiàn)在這么完善。當用戶關閉了系統(tǒng)的授權框后,如果需要再打開相關權限,就只能通過手動去設置頁自己開啟權限,整個過程需要五六個步驟,大大提升了用戶的開啟成本。
如果用戶在第一次拒絕了應用的授權請求時,如果再想讓用戶打開相關權限就非常困難。
pre-permission 有什么用
現(xiàn)在的 iOS 系統(tǒng),在用戶拒絕授權后,我們可以在下次出現(xiàn)的自定義彈窗中加入去設置按鈕,用戶只需要兩三步就可以授權成功。
最重要的是。以前用戶很容易找不到在哪里去開啟權限,而現(xiàn)在我們可以直接將用戶引到到授權頁,用戶點擊授權即可??梢哉f有了去設置這個按鈕后,用戶再次打開權限的成本大大降低,而 pre-permission 當初出現(xiàn)的原因,正是為了解決再次打開權限的成本高的問題。
那么是不是說 pre-permission 這種方式已經過時了呢?
答案當然是:沒過時。
首先雖然現(xiàn)在的再次授權成本大大降低,但畢竟還是沒有系統(tǒng)授權框的授權體驗好。
但是最重要的不是這個,最重要的是:當用戶不能很好的理解我們?yōu)槭裁葱枰跈嗟臅r候,我們可以在預授權的提示框中加入詳細的說明,從而達到用戶給我們授權的目的。
哪些權限需要 pre-permission
其實大部分的權限獲取,通過系統(tǒng)自帶的授權框都能解決問題。比如:相機、相冊、定位等。
這些權限的特點是和授權場景的關聯(lián)性很強,只需要簡單的文字用戶就能理解我們需要權限干什么;用戶理解后一般就會授予我們權限,如果用戶不給我們權限的話,就不能使用相關功能。
比如:他要修圖,卻不給我們相冊權限,之后當用戶發(fā)現(xiàn)沒有權限不能修圖后,自然會給我們權限,所以這些權限一般不用擔心。
比較特殊的是通知權限和通訊錄權限。
我們先來說通知權限。
先說結論:如果通知權限對應用影響很大,一定要加 pre-permission。如果通知權限只是給用戶提供一種便利,沒有也影響不大。比如:淘寶、京東這些,可加可不加。
原因:通知權限幾乎是每個應用都想拿到的權限,對于有些應用來說,通知權限是一個很重要的權限。
比如:通訊類軟件,消息需要實時的傳達給用戶,如果沒有通知權限,對于應用的影響是非常大的,這類應用比較少。
而對于其他應用來說,通知權限只是為了增加用戶體驗的一個方式而已,拿到最好,拿不到也無關痛癢。
還有些應用拿到通知權限,就是為了給用戶發(fā)一些沒用的信息,而不考慮用戶的感受,這種應用很多,拿不到也就算了。
于是這就造成了一個問題:現(xiàn)在的用戶一般都不想給應用通知權限,用戶的感覺就是給了通知權限就會被不斷的彈窗騷擾,再加上很多應用,都是用戶剛一打開應用就讓用戶授予通知權限。而 iOS 中的通知框又不能添加說明文字,不能向用戶說明應用獲取通知權限的目的,所以大部分用戶很多時候一看到通知權限就會下意識的不授予。一旦用戶不授予通知權限,我們也不能像相機、相冊、定位這樣的權限一樣,通過不讓用戶使用相關功能的方式,來再次提示用戶去打開權限。因為即使沒有通知權限,應用一定是可以正常運行的,于是拿到通知權限變成了一件非常難的事。
關鍵的問題是:有些應用拿不到就拿不到了,而對于有的應用的影響是非常大的,甚至是致命的。這些應用不會去騷擾用戶,但是也被用戶誤解了。
所以對于這種應用來說,就需要一種方式來避免被用戶誤解,向用戶說明需要通知權限去做什么,盡最大可能性拿到通知權限,那么 pre-permission 也就再次派上了用場。
再來說說通訊錄權限。
結論:不管什么應用,在申請通訊錄權限時,最好都加上 pre-permission。
原因:在所有的權限中,哪個權限是用戶感覺最涉及隱私的——大部分用戶都會認為是通訊錄權限。
除非你的應用像微信,QQ 這類讓用戶有足夠安全感的應用,否則一般情況下用戶都不會隨便授予你通訊錄權限?,F(xiàn)在用戶動不動收到詐騙短信,詐騙電話,誰知道是不是你們這種不靠譜的公司泄露出去的。
即使是大公司,現(xiàn)在都不能讓用戶放心了,最近爆出的 Facebook 泄露用戶個人信息很好的說明了問題。
所以獲取通訊錄權限也比較難,通訊錄權限和通知權限有些地方很像,如果用戶決定了不授予你通訊錄權限,你之后再想獲取到這些權限就比較難。所以對于通訊錄權限來說,通過 pre-permission 的方式來獲取也比較好。
對于其他權限的來說,如果你想更加充分的向用戶去說明也是可以用的,這里就不再多說。
在 Android 中怎么設計
Android 中的彈窗都不能添加說明文字,是不是就應該都添加 pre-permission 呢?實際上不是。
首先在之前我們說到過,Android 中的系統(tǒng)授權框可以不止一次的彈出來(下次進入應用時),所以用戶再次授權成本更低。
其次,大部分的授權我們也提到過,像相機、相冊、定位這種,用戶已經被各種應用教育的非常好了,基本都會給你權限,不給的話相關功能也用不了。
所以實際上在 Android 中和 iOS 中情況差不多,主要針對通知和通訊錄權限來使用 pre-permission,但是 Android 中通知權限不用通過用戶授權,所以我們只要在申請通訊錄權限的時候加上 pre-permission 即可。
3. 拒絕后怎么辦?
pre-permission 被拒
添加了 pre-permisson 也不是萬能的,也會被用戶拒絕。
而通知和通訊錄權限,不像定位,相機權限,可以在用戶進入相關頁面時提示功能不能用。
若要使用相關功能就得打開權限,對于這種情況我們怎么辦呢?
拿通知舉例,我們就要在用戶需要被提醒的時候,來提醒用戶打開通知。如果用戶真的需要被通知,那么自然會授予我們權限。
如果是通訊錄呢?
那就在添加好友的時候提醒,要注意的是這種提示不是用彈窗的方式,這樣有騷擾用戶的嫌疑。
網絡授權框被拒
用戶關閉了網絡授權后,系統(tǒng)會在下一次用戶進入應用時,自動彈出已經關閉網絡權限的提示框,應用只需按照斷網情況處理即可。
西瓜視頻在斷網后為用戶分析了不同的可能性,并且在檢查網絡權限這里添加了設置按鈕。用戶可以很方便的檢查網絡是否關閉,這樣的設計可以說是非常棒了,大多數(shù)的應用在斷網后的設計都沒有這么細致。
系統(tǒng)授權框被拒
在用戶拒絕我們后,立即提示用戶若要使用相關功能就得打開相關權限,并且在該權限的每個觸發(fā)點都加入彈窗提示,同時給用戶一個去設置的按鈕。這里要注意的是,用戶點擊去設置后,要直接將用戶送到應用的授權界面,不要讓用戶去找。
提示的方式有兩種:彈窗提示、整頁提示。
如果你需要授權的功能,不需要占用整個頁面就用彈窗提示;如果該功能需要占用整個頁面,那么就用整頁提示。
4. 提示文案
首先,iOS 中網絡授權框和通知授權框中的文字是固定的,不能自定義。
pre-permission 中的文案
由于 pre-permission 的優(yōu)勢,我們可以充分的向用戶說明:
結合圖片文字的方式說清楚我們要獲取這個權限做什么用?
如果你不給我們權限會怎樣?
打消用戶的疑慮,如果是通訊錄權限就說明白我們不會侵犯你的隱私,您可以隨時關閉該權限;如果是通知權限就說明白我們不會騷擾你,前面給出的 VUE 的預授權彈窗中,就專門強調了不會打擾用戶,這點很好。
第一次 iOS 系統(tǒng)授權提示框出現(xiàn)時的文案
說明白,如果不給我們權限你將不能使用什么功能,個人認為「你不能做什么」這種方式要比「我要為你做什么更好」。
被拒絕后提示框中的文案
您還尚未開啟某權限,所以不能使用該功能,請開啟權限。
總結
這篇文章寫得比較長,希望的是大家看完后不光知道怎么去設計 App 授權,更知道為什么這么設計,這樣當遇到不同的情景的時候才能靈活處理。
最后我們以一個例子來收尾,假設我們的應用是一款小視頻類軟件。
第一步:找出所有應用中用到的權限,分為 iOS 需要的授權和 Android 需要的授權
第二步:針對每一個權限做設計
接下來我們以 iOS 下的相機權限為例:
1. 什么時候彈出?
用戶點擊錄制視頻時彈出。
2. 要不要 pre-permission?
不要,所需權限與場景關聯(lián)性很強,利用系統(tǒng)提示框中的自定義文字即可。
3. 如果用戶拒絕了怎么辦?
點擊拒絕后和下次進入時,利用整頁去提示用戶,并添加去設置按鈕。
4. 文案:(簡單示范,大家可以寫的更好一點)
這樣一個權限的設計就完成了,可以去繪制原型圖了,相冊、麥克風、定位權限的設計和相機權限的設計基本雷同,通知權限就當成作業(yè)讓大家去設計了。