查詢相冊和攝像頭的使用權(quán)限

當你第一次在應(yīng)用中打開相冊的時候,系統(tǒng)會提示你是否允許用戶訪問相冊,如果你選擇不允許的話,你以后在該應(yīng)用中將無法訪問相冊。如果想要重新允許,那么需要去“隱私設(shè)置”里面去設(shè)置。在程序中怎么獲取用戶是否擁有對相冊的訪問權(quán)限,然后做相應(yīng)地操作呢,下面列出了相冊的權(quán)限

iOS8之前
// 所在的庫:<AssetsLibrary/AssetsLibrary.h>

typedef NS_ENUM(NSInteger, ALAuthorizationStatus) {
    ALAuthorizationStatusNotDetermined = 0, // 用戶還沒有做出選擇
    ALAuthorizationStatusRestricted,        // 家長控制,不允許訪問
    ALAuthorizationStatusDenied,            // 用戶拒絕當前應(yīng)用訪問相冊,我們需要提醒用戶打開訪問開關(guān)
    ALAuthorizationStatusAuthorized         // 用戶允許當前應(yīng)用訪問相冊
}

// 獲取當前照片庫授權(quán)狀態(tài)的方法,可以通過判斷這個狀態(tài),來決定是否要提醒用戶到設(shè)置中開啟服務(wù)
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
iOS8之后
// 所在的庫:<Photos/Photos.h>

typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
    PHAuthorizationStatusNotDetermined = 0, // 用戶還沒有做出選擇
    PHAuthorizationStatusRestricted,        // 家長控制,不允許訪問
    PHAuthorizationStatusDenied,            // 用戶拒絕當前應(yīng)用訪問相冊,我們需要提醒用戶打開訪問開關(guān)
    PHAuthorizationStatusAuthorized         // 用戶允許當前應(yīng)用訪問相冊
}

// 獲取當前照片庫授權(quán)狀態(tài)的方法,可以通過判斷這個狀態(tài),來決定是否要提醒用戶到設(shè)置中開啟服務(wù)
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
在ios7之前攝像頭是一直可以訪問的,隱私設(shè)置選項中沒有關(guān)閉相應(yīng)軟件攝像頭功能的選項。在ios7以后攝像頭和相冊一樣增加了訪問權(quán)限的設(shè)置,應(yīng)用中第一次訪問攝像頭的時候,系統(tǒng)會詢問你是否授權(quán)應(yīng)用訪問你的攝像頭。攝像頭的權(quán)限和相冊的權(quán)限基本上一樣
// 所在的庫:<AVFoundation/AVFoundation.h>

typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
    AVAuthorizationStatusNotDetermined = 0, // 用戶還沒有做出選擇
    AVAuthorizationStatusRestricted,        // 家長控制,不允許訪問
    AVAuthorizationStatusDenied,            // 用戶拒絕當前應(yīng)用訪問相冊,我們需要提醒用戶打開訪問開關(guān)
    AVAuthorizationStatusAuthorized         // 用戶允許當前應(yīng)用訪問相機
}

// 獲取當前攝像頭授權(quán)狀態(tài)的方法,可以通過判斷這個狀態(tài),來決定是否要提醒用戶到設(shè)置中開啟服務(wù)
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
如果是iOS8之后,則可以直接跳轉(zhuǎn)到APP設(shè)置面板
+ (void)goAppSetting
{
    // 打開應(yīng)用設(shè)置面板
    NSURL *appSettingUrl = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    UIApplication *app = [UIApplication sharedApplication];
    if ([app canOpenURL:appSettingUrl])
    {
        if ([UIDevice currentDevice].systemVersion.floatValue >= 10.0)
        {
            [app openURL:appSettingUrl options:@{} completionHandler:^(BOOL success) {
                if (!success) [self showJumpErrorAlert];
            }];
        }
        else
        {
#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wdeprecated-declarations"
            [app openURL:appSettingUrl];
#pragma clang diagnostic pop
        }
    }
    else
    {
        [self showJumpErrorAlert];
    }
}

+ (void)showJumpErrorAlert
{// DVVAlertView GitHub 鏈接:https://github.com/devdawei/DVVAlertView.git
    [DVVAlertView showAlertWithTitle:@"跳轉(zhuǎn)失敗"
                             message:@"請手動到設(shè)置中打開服務(wù)"
                        buttonTitles:@[@"取消"]
                          completion:nil];
}

iOS10需要在info.plist中加入訪問相機和相冊的使用權(quán)限

相機 
Key:Privacy - Camera Usage Description
Type:String

相冊
Key:Privacy - Photo Library Usage Description
Type:String
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,431評論 4 61
  • 近期我最想實現(xiàn)的目標和計劃是 財富增長,讓我每月工作室的純利潤在3萬元以上,并讓我有能力去幫助更多需要幫助的人。 ...
    自在2015閱讀 196評論 0 0
  • 前段時間有篇文章《新相親時代:7分的人認為自己8分,想找9分》刷爆朋友圈,文中描述現(xiàn)在很多人相親他們一方面期望對方...
    張二白很白閱讀 984評論 4 30
  • 轉(zhuǎn)自 1. 什么是Activity? 四大組件之一,一般的,一個用戶交互界面對應(yīng)一個activity setCon...
    joe1632閱讀 1,465評論 0 7
  • 當我想采擷那朵蓮花愛意時 不經(jīng)意間 雪就落了 揚揚灑灑 飄了整個冬季 白色的遺憾 堆積成山 當我想要為你播撒...
    霧江影A王江宗閱讀 487評論 10 7

友情鏈接更多精彩內(nèi)容