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