前言:
開發(fā)中,我們常常需要打開設(shè)置界面賦予我們的APP各種權(quán)限,以完成拍照,定位等功能。在iOS 10以前我們通常的做法是彈出帶按鈕的提示框,由用戶點(diǎn)擊確定后,自動跳轉(zhuǎn)入系統(tǒng)設(shè)置界面完成各項賦值操作后再返回APP。但在iOS 10之后,蘋果對APP權(quán)限的賦予有了新的規(guī)范,任何APP的權(quán)限一旦發(fā)生變化,重新回到APP時,都會造成該APP重啟進(jìn)入,由次會造成極其不佳的用戶體驗(比如輸入信息時,萬里長征只差最后一步拍照時,打開拍照權(quán)限后一切又得重來)。然而,蘋果設(shè)置如此我等也無能為力,只能采取迂回戰(zhàn)術(shù)提升用戶體驗!
解決方案:
方案1:參照用戶登錄信息緩存的策略,在跳轉(zhuǎn)到權(quán)限設(shè)置界面之前,我們可以將當(dāng)前控制器VC作為模型數(shù)據(jù)存儲到本地緩存中,每次應(yīng)用重啟時,先檢測本地是否有該類緩存,有則直接打開,無則正常進(jìn)入。該方案缺點(diǎn)在于,直接打開存儲VC時,因上級界面為空,故只能返回到首頁,無法正常返回上一級界面,同時需要將存儲VC中的相應(yīng)數(shù)據(jù)也緩存下來,打開VC時再提取顯示,提升用戶體驗。
方案2:比起方案1,方案2更加方便快捷,我們可以在用戶需要使用權(quán)限功能之前確保應(yīng)用權(quán)限已完成授予操作,由此避開相應(yīng)問題,比如在應(yīng)用啟動時,或者 權(quán)限所需 VC 剛進(jìn)入時就進(jìn)行權(quán)限檢測
附:
此處共享一個在應(yīng)用運(yùn)行時中直接打開該應(yīng)用的權(quán)限設(shè)置界面的方法:
leturl =NSURL.init(string:UIApplicationOpenSettingsURLString)
UIApplication.sharedApplication().openURL(url!)