iOS 獲取手機系統(tǒng)權限以及跳轉(zhuǎn)app設置

故事發(fā)生

  • 因為用戶想使用頭像上傳功能拒絕授予app相機權限武翎,導致每次進入相機功能時候就黑屏花椭,需要修改此bug

那就開始先說說app如何加入了權限設置

前言

iOS 10發(fā)布以來禁漓,蘋果公司為了用戶的信息安全逼侦,在訪問內(nèi)部應用都加入了隱私權限設置择示,讓用戶來選擇是否使用令境。如果在開發(fā)中不對這些權限進行設置的話造成crash播揪。

1.在程序的Info.plist中添加如以下設置:

Info.plist.png

2.可以從下表中選擇相應權限進行配置

權限 info.plist中key info.plist中Value
相冊 NSPhotoLibraryUsageDescription 是否允許此app使用相冊?
相機 NSCameraUsageDescription 是否允許此app使用相機?
麥克風 NSMicrophoneUsageDescription 是否允許此app使用麥克風?
位置 NSLocationUsageDescription 是否允許此app使用位置?
在使用期間訪問位置 NSLocationWhenInUseUsageDescription 是否允許此app在使用期間訪問位置?
始終訪問位置 NSLocationAlwaysUsageDescription 是否允許此app始終訪問位置贮喧?
日歷 NSCalendarsUsageDescription 是否允許此app使用日歷?
提醒事項 NSRemindersUsageDescription 是否允許此app使用提醒事項?
運動與健身 NSMotionUsageDescription 是否允許此app使用運動與健身猪狈?
健康更新 NSHealthUpdateUsageDescription 是否允許此app使用健康更新箱沦?
健康分享 NSHealthShareUsageDescription 是否允許此app使用健康分享?
藍牙 NSBluetoothPeripheralUsageDescription 是否允許此app使用藍牙雇庙?
媒體資料庫 NSAppleMusicUsageDescription 是否允許此app使用媒體資料庫谓形?
語音識別 NSSpeechRecognitionUsageDescription 是否允許此app使用語音識別?

3.以運動與健身為例疆前,將上面表格中的key添加然后回車寒跳,在string中添加提示語言就完成了

運動與健身.png

故事繼續(xù)發(fā)生 -------------------------無奈的分割線-------

有些用戶就在系統(tǒng)彈出窗口不授予權限,那么我們在app上就要做權限判斷以及跳轉(zhuǎn)到系統(tǒng)設定界面

相冊權限--iOS 8.0之前

  • 導入頭文件#import <AssetsLibrary/AssetsLibrary.h>;
  • 檢查是否有相冊權限
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch (status) {
  case ALAuthorizationStatusAuthorized:
      NSLog(@"Authorized");
      break;
  case ALAuthorizationStatusDenied:
      NSLog(@"Denied");
      break;
  case ALAuthorizationStatusNotDetermined:
      NSLog(@"not Determined");
      break;
  case ALAuthorizationStatusRestricted:
      NSLog(@"Restricted");
      break;

  default:
      break;
}

其中竹椒,各個status代表的含義是

typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
    AVAuthorizationStatusNotDetermined = 0, // 用戶尚未做出選擇這個應用程序的問候
    AVAuthorizationStatusRestricted,        // 此應用程序沒有被授權訪問的照片數(shù)據(jù)童太。可能是家長控制權限
    AVAuthorizationStatusDenied,            // 用戶已經(jīng)明確否認了這一照片數(shù)據(jù)的應用程序訪問
    AVAuthorizationStatusAuthorized        // 用戶已經(jīng)授權應用訪問照片數(shù)據(jù)
} NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;

相冊權限--iOS 8.0之后

  • 導入頭文件#import <Photos/Photos.h>;
  • 檢查是否有相冊權限
PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
switch (photoAuthorStatus) {
  case PHAuthorizationStatusAuthorized:
      NSLog(@"Authorized");
      break;
  case PHAuthorizationStatusDenied:
      NSLog(@"Denied");
      break;
  case PHAuthorizationStatusNotDetermined:
      NSLog(@"not Determined");
      break;
  case PHAuthorizationStatusRestricted:
      NSLog(@"Restricted");
      break;
  default:
      break;
}

檢查是否有權限之后,如果沒有權限康愤,那么就要跳轉(zhuǎn)到系統(tǒng)的權限設置儡循,而

- (void)showAlert
{

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"相機權限未開啟"
                                                        message:@"相機權限未開啟,請進入系統(tǒng)【設置】>【隱私】>【相機】中打開開關,開啟相機功能"
                                                       delegate:nil
                                              cancelButtonTitle:@"取消"
                                              otherButtonTitles:@"立即開啟", nil];

 @weakify(self);
[[alertView rac_buttonClickedSignal] subscribeNext:^(NSNumber *buttonIndex) {
 @strongify(self);
         if ([buttonIndex isEqualToNumber:@1]) {
#ifdef __IPHONE_8_0 
          //跳入當前App設置界面,通常使用此方法
        [[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
#else 
        //適配iOS7 ,跳入系統(tǒng)設置界面
        [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"prefs:root=General&path=About"]];
#endif 
    }
}];
    [alertView show];
}

在 YourAppTarget->Info->URL Types 這個地方征冷,如上圖择膝,寫上 prefs 字段;這樣在 iOS 8 及 iOS 9 中都親測有效检激。但是在iOS 10上無效
下面給出一個較為完整的列表肴捉,可以讓你隨意跳轉(zhuǎn)到 設置App 里的任意一個地方 :

info中,添加 URL Schemes為 prefs的url
URL Schemes: prefs

【List of currently known URLs in the Settings app】

About — prefs:root=General&path=About  
Accessibility — prefs:root=General&path=ACCESSIBILITY  
AirplaneModeOn— prefs:root=AIRPLANE_MODE  
Auto-Lock — prefs:root=General&path=AUTOLOCK  
Brightness — prefs:root=Brightness  
Bluetooth — prefs:root=General&path=Bluetooth
Date& Time — prefs:root=General&path=DATE_AND_TIME  
FaceTime — prefs:root=FACETIME
General— prefs:root=General
Keyboard — prefs:root=General&path=Keyboard  
iCloud — prefs:root=CASTLE  iCloud 
Storage & Backup — prefs:root=CASTLE&path=STORAGE_AND_BACKUP  
International — prefs:root=General&path=INTERNATIONAL  
Location Services — prefs:root=LOCATION_SERVICES  
Music — prefs:root=MUSIC  
Music Equalizer — prefs:root=MUSIC&path=EQ  
Music VolumeLimit— prefs:root=MUSIC&path=VolumeLimit  
Network — prefs:root=General&path=Network  
Nike + iPod — prefs:root=NIKE_PLUS_IPOD  
Notes — prefs:root=NOTES  
Notification — prefs:root=NOTIFICATIONS_ID  
Phone — prefs:root=Phone  
Photos — prefs:root=Photos  
Profile — prefs:root=General&path=ManagedConfigurationList  
Reset — prefs:root=General&path=Reset  
Safari — prefs:root=Safari  Siri — prefs:root=General&path=Assistant  
Sounds — prefs:root=Sounds  
SoftwareUpdate— prefs:root=General&path=SOFTWARE_UPDATE_LINK  
Store — prefs:root=STORE  
Twitter — prefs:root=TWITTER  
Usage — prefs:root=General&path=USAGE  
VPN — prefs:root=General&path=Network/VPN  
Wallpaper — prefs:root=Wallpaper  
Wi-Fi — prefs:root=WIFI
Setting—prefs:root=INTERNET_TETHERING

WARNING:這是私有 API叔收,在 AppStore 上架 App 中齿穗,請小心謹慎使用。

參考更多手機開發(fā)權限

如果覺得還不錯饺律,請點贊窃页,你的點贊將是我努力的動力,如果有什么不足复濒,請多指教

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脖卖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巧颈,更是在濱河造成了極大的恐慌畦木,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砸泛,死亡現(xiàn)場離奇詭異十籍,居然都是意外死亡,警方通過查閱死者的電腦和手機唇礁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門勾栗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垒迂,你說我怎么就攤上這事械姻《噬撸” “怎么了机断?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绣夺。 經(jīng)常有香客問我吏奸,道長,這世上最難降的妖魔是什么陶耍? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任奋蔚,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泊碑。我一直安慰自己坤按,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布馒过。 她就那樣靜靜地躺著臭脓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腹忽。 梳的紋絲不亂的頭發(fā)上来累,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音窘奏,去河邊找鬼嘹锁。 笑死,一個胖子當著我的面吹牛着裹,可吹牛的內(nèi)容都是我干的领猾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼骇扇,長吁一口氣:“原來是場噩夢啊……” “哼瘤运!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起匠题,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拯坟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后韭山,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郁季,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年钱磅,在試婚紗的時候發(fā)現(xiàn)自己被綠了梦裂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡盖淡,死狀恐怖年柠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情褪迟,我是刑警寧澤冗恨,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站味赃,受9級特大地震影響掀抹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜心俗,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一傲武、第九天 我趴在偏房一處隱蔽的房頂上張望蓉驹。 院中可真熱鬧,春花似錦揪利、人聲如沸态兴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诗茎。三九已至,卻和暖如春献汗,著一層夾襖步出監(jiān)牢的瞬間敢订,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工罢吃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留楚午,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓尿招,卻偏偏與公主長得像矾柜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子就谜,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容