權(quán)限的目的是保護(hù)用戶隱私,那么在何時(shí)以及用什么方式請(qǐng)求用戶權(quán)限會(huì)是比較合適的?本文將詳細(xì)介紹Android的運(yùn)行時(shí)權(quán)限模型,并展示設(shè)計(jì)一個(gè)UX來(lái)請(qǐng)求你的應(yīng)用程序所需的權(quán)限,希望對(duì)你有所啟發(fā)。
從Android 6.0開始,沒有在安裝時(shí)請(qǐng)求所有權(quán)限,而是引入了運(yùn)行時(shí)權(quán)限模型,開發(fā)者可以控制應(yīng)用何時(shí)以及如何請(qǐng)求權(quán)限。這如同你想邀某人出去約會(huì),過(guò)早、過(guò)頻繁或以錯(cuò)誤的方式對(duì)你來(lái)說(shuō)并不好。
本文我將詳細(xì)介紹Android的運(yùn)行時(shí)權(quán)限模型,并向你展示如何設(shè)計(jì)一個(gè)UX來(lái)請(qǐng)求你的應(yīng)用程序所需的權(quán)限。權(quán)限的目的是保護(hù)用戶的隱私,但當(dāng)你請(qǐng)求權(quán)限時(shí),你是在要求用戶放棄一點(diǎn)隱私,因此,你需要提供明確且平等的利益以換取訪問(wèn)。運(yùn)行時(shí)權(quán)限允許你在用戶更了解你請(qǐng)求權(quán)限的原因和授予權(quán)限的好處時(shí)選擇合適的時(shí)間請(qǐng)求權(quán)限。Android實(shí)現(xiàn)它們的方式使得以正確的方式請(qǐng)求它們變得十分重要。
運(yùn)行時(shí)權(quán)限模型有利于保護(hù)用戶的隱私,當(dāng)你的應(yīng)用程序請(qǐng)求權(quán)限時(shí),Android會(huì)顯示一個(gè)對(duì)話框讓用戶接受或拒絕它,第一次請(qǐng)求權(quán)限時(shí)對(duì)話框不會(huì)顯示“不再詢問(wèn)”復(fù)選框,只會(huì)在用戶至少一次拒絕權(quán)限請(qǐng)求后顯示它,你可以檢查之前是否被拒絕過(guò),并明智的決定在何時(shí)提供更多教育。
從Android 11開始,如果用戶在使用應(yīng)用的過(guò)程中多次拒絕某項(xiàng)特定的權(quán)限,那么在你的應(yīng)用再次請(qǐng)求該權(quán)限時(shí),用戶將不會(huì)看到系統(tǒng)權(quán)限對(duì)話框。該操作表示用戶希望“不再詢問(wèn)”。
你無(wú)需過(guò)度防御,例如在實(shí)際請(qǐng)求權(quán)限之前你始終通過(guò)預(yù)許可(預(yù)授權(quán))來(lái)衡量用戶授予權(quán)限的可能性,本質(zhì)上是請(qǐng)求兩次,這種雙重提示可能是不必要且煩人的,你可以通過(guò)在正確的時(shí)間以正確的方式詢問(wèn)來(lái)達(dá)到同樣的效果。
Material Design分解了在兩個(gè)維度上請(qǐng)求權(quán)限的不同方法。首先權(quán)限對(duì)你的應(yīng)用程序的運(yùn)行有多重要?其次,你請(qǐng)求它的原因有多清晰?根據(jù)這兩個(gè)因素,建議你采用不同的方法來(lái)請(qǐng)求權(quán)限。
如果某項(xiàng)權(quán)限對(duì)應(yīng)用程序運(yùn)行至關(guān)重要,并且顯而易見為什么需要請(qǐng)求它。例如日歷應(yīng)用,拒絕日歷權(quán)限會(huì)使應(yīng)用程序無(wú)法運(yùn)行,并且用戶顯然知道日歷應(yīng)用的用途以及請(qǐng)求日歷權(quán)限的原因,因此
不需要用任何不必要的解釋來(lái)打擾用戶,只需在用戶首次啟動(dòng)應(yīng)用時(shí)立即請(qǐng)求它即可。
如果某項(xiàng)權(quán)限對(duì)應(yīng)用至關(guān)重要,但請(qǐng)求它的原因不是很清晰。例如信貸應(yīng)用,為了準(zhǔn)確評(píng)估用戶的信貸資格、償還能力和防范反欺詐,通訊錄權(quán)限、通話記錄權(quán)限、位置權(quán)限對(duì)于風(fēng)控而言非常重要,建議請(qǐng)求權(quán)限之前對(duì)用戶進(jìn)行教育。
如果應(yīng)用中的某項(xiàng)次要功能需要權(quán)限,但請(qǐng)求它的原因很清晰,建議你在使用場(chǎng)景中請(qǐng)求權(quán)限。例如筆記應(yīng)用允許用戶使用語(yǔ)音或音頻創(chuàng)建筆記,那么很明顯為什么此功能需要麥克風(fēng)權(quán)限,無(wú)需過(guò)早的請(qǐng)求它,以免用戶負(fù)擔(dān)過(guò)重,最好等到用戶嘗試使用該功能時(shí),因?yàn)橛脩舾锌赡茉试S符合其預(yù)期的權(quán)限請(qǐng)求。
如果應(yīng)用中的某項(xiàng)次要功能需要權(quán)限,并且請(qǐng)求他的原因不是很清晰,建議你結(jié)合使用場(chǎng)景進(jìn)行教育。例如筆記應(yīng)用允許用戶與朋友協(xié)作,那么請(qǐng)求聯(lián)系人權(quán)限可能是合理的,但它不是顯而易見的,當(dāng)用戶調(diào)用該功能時(shí),解釋應(yīng)用獲得聯(lián)系人權(quán)限后可為用戶提供哪些好處,比如自動(dòng)填充郵件地址,然后才請(qǐng)求聯(lián)系人權(quán)限讓用戶授予它。
-
在應(yīng)用界面中突出顯示因?yàn)闆]有獲得特定權(quán)限而受限的功能所在的具體部分,例如在原本用于顯示該功能的結(jié)果或數(shù)據(jù)的位置顯示一條消息,讓用戶知道因缺少權(quán)限而無(wú)法使用該功能,幫助用戶在權(quán)限和功能之間建立心理聯(lián)系。
-
不要阻止界面顯示,不要全屏警告消息,讓用戶根本無(wú)法繼續(xù)使用應(yīng)用。即使在權(quán)限請(qǐng)求拒后,應(yīng)用也應(yīng)盡可能提供最佳的用戶體驗(yàn)。例如即使麥克風(fēng)使用權(quán)限請(qǐng)求遭拒,仍應(yīng)全面提高文本功能的易用性。
-
用戶可能已經(jīng)選中了“不再詢問(wèn)“復(fù)選框,應(yīng)用可能會(huì)在用戶未看到權(quán)限請(qǐng)求對(duì)話框的情況下受到拒絕,此時(shí)應(yīng)用應(yīng)該提供一個(gè)鏈接,鏈接到設(shè)備設(shè)置中用戶可以打開權(quán)限的具體位置。
在應(yīng)用中聲明權(quán)限之前,請(qǐng)先考慮是否需要這樣做,或者是否有替代方法可以在應(yīng)用中支持該功能。因?yàn)槿绻麘?yīng)用聲明權(quán)限,那么每當(dāng)用戶使用需要運(yùn)行時(shí)權(quán)限的功能時(shí),應(yīng)用便不得不中斷用戶的操作,請(qǐng)求相應(yīng)權(quán)限。然后,用戶必須做出決定。如果用戶不能理解您的應(yīng)用為何請(qǐng)求特定權(quán)限,可能就會(huì)拒絕授予該權(quán)限,甚至卸載應(yīng)用。
下面介紹幾個(gè)可以在不聲明任何權(quán)限的情況下實(shí)現(xiàn)的用例:
Android為應(yīng)用提供了相互通信的功能,讓你可以將任務(wù)委托給其他應(yīng)用。例如,如果你希望允許用拍照,但它不是應(yīng)用的核心部分,可以考慮使用Intent請(qǐng)求相機(jī)應(yīng)用拍攝照片并將其分享給你的應(yīng)用,這樣就不需要CAMERA權(quán)限。
雙因素身份驗(yàn)證流程中,動(dòng)態(tài)短信驗(yàn)證碼作為第二校驗(yàn)因素時(shí),使用SMS Retriever API(短信檢索器)可以讓應(yīng)用自動(dòng)執(zhí)行用戶身份驗(yàn)證,不需要用戶手動(dòng)輸入驗(yàn)證碼,不需要READ_SMS權(quán)限。