iOS系統(tǒng)的授權(quán)邏輯
根據(jù)筆者的觀察總結(jié),目前為止網(wǎng)絡(luò)上關(guān)于產(chǎn)品授權(quán)相關(guān)的文章大多數(shù)都是介紹基于正常流程的用戶體驗(yàn)層面相關(guān)的設(shè)計,很少有涉及技術(shù)層面的文章。本文為筆者采用不完全歸納法總結(jié)分析得出,遍歷與iOS系統(tǒng)授權(quán)相關(guān)的各種邊界情況。
相比于Android系統(tǒng),iOS一向以注重保護(hù)用戶隱私而著稱,在需要獲取用戶相關(guān)隱私權(quán)限時都需要用戶手動授權(quán)。而且iOS只給開發(fā)者一次去征詢授權(quán)的機(jī)會,在人文層面上做到了尊重用戶。
因此做好iOS應(yīng)用授權(quán)的設(shè)計并非易事,作為產(chǎn)品設(shè)計者必須熟悉iOS系統(tǒng)關(guān)于授權(quán)相關(guān)的技術(shù)文檔,才能確定功能的可行性。不然,脫離了技術(shù)的產(chǎn)品設(shè)計只能叫做意淫罷了,雖然意淫是個很美的詞。
一、iOS的授權(quán)類型
在這些授權(quán)中比較特殊有「聯(lián)網(wǎng)授權(quán)」、「位置服務(wù)授權(quán)」和「藍(lán)牙授權(quán)」,其中「聯(lián)網(wǎng)授權(quán)」最為特殊。因?yàn)閷τ谶@三種權(quán)限來說,即使用戶為應(yīng)用授權(quán)允許,應(yīng)用也不一定能正常獲取,因?yàn)槭謾C(jī)針對這三個權(quán)限設(shè)置有單獨(dú)的全局性開關(guān),因此在權(quán)限的使用過程中,就會出現(xiàn)多種類型的異常情況組合。
不同于其他權(quán)限,「聯(lián)網(wǎng)授權(quán)」只會在應(yīng)用首次安裝并打開的時候彈出(當(dāng)時手機(jī)正常聯(lián)網(wǎng)),開發(fā)者無權(quán)配置觸發(fā)點(diǎn)。當(dāng)應(yīng)用再次安裝的時候,應(yīng)用會默認(rèn)選擇之前的授權(quán)記錄。
除了「聯(lián)網(wǎng)授權(quán)」,其他所有的權(quán)限在應(yīng)用每次安裝的時候都有且只有一次主動征詢用戶授權(quán)的機(jī)會,開發(fā)者可以自主配置觸發(fā)點(diǎn)。
「聯(lián)網(wǎng)授權(quán)」的補(bǔ)充說明:
由于工信部出臺了相關(guān)規(guī)定,要求應(yīng)用在未經(jīng)用戶允許的前提下,系統(tǒng)不能授予其使用聯(lián)網(wǎng)、獲取定位等功能。因此在iOS10之后,蘋果公司針對中國大陸地區(qū)iOS系統(tǒng)專門提供了需要用戶授權(quán)「無線網(wǎng)絡(luò)與蜂窩數(shù)據(jù)連接」的彈窗提示,這個功能便享有了中國特供的殊榮。用戶在 iOS ?系統(tǒng)中第一次安裝并打開應(yīng)用時,會被要求對于是否授予應(yīng)用聯(lián)網(wǎng)權(quán)限進(jìn)行選擇。
此「中國特供」功能出現(xiàn)的異常情況:
很久之前,筆者在安裝某個APP的時候就曾遇到應(yīng)用無法彈出網(wǎng)絡(luò)授權(quán)彈窗的情況,在「應(yīng)用的權(quán)限」列表頁也無法找到無線數(shù)據(jù)這個權(quán)限,「使用無限局域網(wǎng)與蜂窩移動的應(yīng)用」列表頁根本找不到該應(yīng)用,反復(fù)卸載重裝依舊如此,當(dāng)時被整整困惑了好多天。
之后通過網(wǎng)絡(luò)檢索才發(fā)現(xiàn)這是此「中國特供」功能推出之后iOS的系統(tǒng)級bug。
原因是iOS沒有向開發(fā)者提供類似「位置服務(wù)授權(quán)」的「請求聯(lián)網(wǎng)權(quán)限」API,開發(fā)者沒法調(diào)用這個功能,因而無法確保自己的 App 每次都能彈出請求「請聯(lián)網(wǎng)權(quán)限」的彈窗。
解決辦法:
- 方法 1:多次退出重進(jìn) App,有一定幾率會彈出提示框。
- 方法 2:在「設(shè)置 – 蜂窩移動網(wǎng)絡(luò)」內(nèi)打開「無線局域網(wǎng)助理」開關(guān),再進(jìn)入無法聯(lián)網(wǎng)的 App,會彈出提示框。解決之后,就可以關(guān)掉助理開關(guān)。
- 方法 3:先去設(shè)置里隨意關(guān)閉一個 App 的聯(lián)網(wǎng)權(quán)限,然后打開,再進(jìn)入無法聯(lián)網(wǎng)的 App,會彈出提示框。
二、利用deep-link引導(dǎo)用戶再次授權(quán)
自從iOS 8開始,app可以在自己的界面中提供deep-link將用戶直接帶去系統(tǒng)設(shè)置界面。開發(fā)者可以配置觸發(fā)點(diǎn),通過deep-link便可鏈接到「應(yīng)用的權(quán)限」列表頁。
系統(tǒng)級的引導(dǎo)可鏈接到「使用無限局域網(wǎng)與蜂窩移動的應(yīng)用」列表頁、「定位服務(wù)開關(guān)」頁面、「藍(lán)牙開關(guān)」頁面等。
三、聯(lián)網(wǎng)授權(quán)情況遍歷
1.首次安裝并啟動APP&手機(jī)未連接無限局域網(wǎng)或蜂窩移動數(shù)據(jù)(手機(jī)斷網(wǎng))
在這種情況下,應(yīng)用無法獲取數(shù)據(jù),系統(tǒng)聯(lián)網(wǎng)請求授權(quán)彈窗將不會彈出。
2.首次安裝并啟動APP&手機(jī)連接無限局域網(wǎng)或蜂窩移動數(shù)據(jù)(手機(jī)有網(wǎng))
在iOS11版本中,蘋果多提供了僅限無限局域網(wǎng)這一選項。
3.手機(jī)連接蜂窩移動數(shù)據(jù)(手機(jī)有網(wǎng))&應(yīng)用不允許使用無限局域網(wǎng)與蜂窩移動數(shù)據(jù)
或:手機(jī)連接蜂窩移動數(shù)據(jù)(手機(jī)有網(wǎng))&應(yīng)用允許使用無限局域網(wǎng)數(shù)據(jù)
此征詢引導(dǎo)為iOS系統(tǒng)級的引導(dǎo),開發(fā)者無權(quán)限調(diào)用。并且只有在手機(jī)有網(wǎng)的情況下才可以征詢,征詢頻率有限制的,并不是每次請求數(shù)據(jù)系統(tǒng)都會彈出。
4.手機(jī)連接無限局域網(wǎng)數(shù)據(jù)(手機(jī)有網(wǎng))&應(yīng)用不允許使用無限局域網(wǎng)與蜂窩移動數(shù)據(jù)
5.手機(jī)斷網(wǎng)
- 手機(jī)未連接無限局域網(wǎng)與蜂窩移動數(shù)據(jù)&應(yīng)用為允許使用無限局域網(wǎng)與蜂窩移動數(shù)據(jù)
- 手機(jī)未連接無限局域網(wǎng)與蜂窩移動數(shù)據(jù)&應(yīng)用為允許使用無限局域網(wǎng)數(shù)據(jù)
- 手機(jī)未連接無限局域網(wǎng)與蜂窩移動數(shù)據(jù)&應(yīng)用為不允許使用無限局域網(wǎng)與蜂窩移動數(shù)據(jù)
以上枚舉了手機(jī)無法聯(lián)網(wǎng)的情況,在無網(wǎng)情況下iOS無法進(jìn)行系統(tǒng)級的引導(dǎo)。此時最好的辦法就是:將所有可能的解決方案列舉出來供引導(dǎo)用戶。
四、定位服務(wù)授權(quán)情況遍歷
1.首次征詢定位服務(wù)授權(quán)&手機(jī)未開啟定位服務(wù)開關(guān)
(1)手機(jī)定位服務(wù)的開啟是「位置服務(wù)授權(quán)」的前置條件。首先,系統(tǒng)會通過默認(rèn)彈窗引導(dǎo)打開定位服務(wù)開關(guān),此彈窗除了APP名稱外不可配置。
(2)在用戶打開定位服務(wù)開關(guān)的前提下,系統(tǒng)征詢用戶定位服務(wù)授權(quán),此彈窗除了APP名稱外可配置說明文字。
2.手機(jī)未開啟定位服務(wù)開關(guān)&應(yīng)用為永不允許訪問位置信息(默認(rèn)為永不)
或:手機(jī)開啟定位服務(wù)開關(guān)&應(yīng)用為永不允許訪問位置信息
應(yīng)用未獲取訪問位置信息權(quán)限包含所述的兩種情況,但應(yīng)用是無法判斷具體屬于哪一種。根據(jù)筆者的觀察統(tǒng)計:大多數(shù)應(yīng)用通過配置彈窗引導(dǎo)用戶到「應(yīng)用的權(quán)限」列表頁引導(dǎo)用戶獲取權(quán)限。然而此方法對問題的定位是不準(zhǔn)確的,即使跳轉(zhuǎn)到了「應(yīng)用的權(quán)限」列表頁也無法開啟定位權(quán)限,因?yàn)槭謾C(jī)可能本身未開啟定位服務(wù)開關(guān)。
特殊的案例:調(diào)用系統(tǒng)引導(dǎo)應(yīng)用(deep-link)到定位服務(wù)開關(guān)頁面
在筆者體驗(yàn)的所有用到定位服務(wù)權(quán)限的應(yīng)用中,只有滴滴的引導(dǎo)開啟做的最為精確,直接引導(dǎo)至定位服務(wù)開關(guān)頁面,因此此方法包含了以上兩種情況,即使手機(jī)未開啟應(yīng)用服務(wù)開關(guān),用戶也可以在一個頁面完成定位服務(wù)權(quán)限的獲取。據(jù)筆者推測此定位API應(yīng)該由iOS系統(tǒng)提供。
五、其他隱私權(quán)限授權(quán)
1.首次征詢授權(quán)的時機(jī)
若為必要授權(quán),可在應(yīng)用首次安裝啟動的時候,向用戶征詢。關(guān)于如何提高用戶授權(quán)的成功率,網(wǎng)上有很過相關(guān)的策略,筆者再次不再啰嗦。
除了「聯(lián)網(wǎng)授權(quán)」、「通知授權(quán)」,其他隱私授權(quán)得系統(tǒng)征詢彈窗都是可以配置說明文字的。
若為非必要授權(quán),可在具體功能用到該功能的時候,設(shè)置對應(yīng)的觸發(fā)點(diǎn)獲取授權(quán)彈窗。
2.若用戶拒絕,再次引導(dǎo)用戶再次授權(quán)
若在第一次征詢用戶授權(quán)的時候被拒,利用iOS提供的deep-link,引導(dǎo)用戶到「應(yīng)用的權(quán)限」列表頁。
以上總結(jié)分析,只是筆者通過體驗(yàn)大量應(yīng)用+檢索相關(guān)資料歸納得出,并非專業(yè)的iOS開發(fā)者,如有技術(shù)冒犯,歡迎拍磚。
本文由@產(chǎn)品范 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自PEXELS,基于CC0協(xié)議
很有用!
調(diào)用系統(tǒng)引導(dǎo)應(yīng)用(deep-link)到定位服務(wù)開關(guān)頁面。我體驗(yàn)過的滴滴出行和高德地圖會在打開app時,直接彈窗引導(dǎo)跳轉(zhuǎn)至定位服務(wù)開關(guān)頁。并且只能有一次的權(quán)限調(diào)用,后期引導(dǎo)開啟只能跳轉(zhuǎn)至app權(quán)限列表頁。