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