iOS相冊恍涂、相機(jī)、通信錄權(quán)限判斷

最近在開發(fā)過程中植榕,遇到了權(quán)限問題≡俨祝現(xiàn)整理一下供大家參考。
首先碰到權(quán)限問題尊残,要在info.plist中配置炒瘸,如下圖:


iOS權(quán)限.png

1、相冊權(quán)限校驗(yàn)寝衫,代碼如下:

/**
 校驗(yàn)相冊權(quán)限
 */
+ (void)checkPhotoAuth:(void (^)(BOOL auth))result {
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0 //iOS 8.0以下使用AssetsLibrary.framework
    ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
    switch (status) {
        case ALAuthorizationStatusNotDetermined:    //用戶還沒有選擇(第一次)
        {
            ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
            [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
                if (*stop) {
                    //允許
                    if (result) {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            result(YES);
                        });
                    }
                    return;
                }
                *stop = YES;
            } failureBlock:^(NSError *error) {
                //拒絕
                if (result) {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        result(NO);
                    });
                }
            }];
        }
            break;
        case ALAuthorizationStatusRestricted:       //家長控制
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case ALAuthorizationStatusDenied:           //用戶拒絕
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case ALAuthorizationStatusAuthorized:       //已授權(quán)
        {
            if (result) {
                result(YES);
            }
        }
            break;
        default:
            break;
    }
#else   //iOS 8.0以上使用Photos.framework
    PHAuthorizationStatus current = [PHPhotoLibrary authorizationStatus];
    switch (current) {
        case PHAuthorizationStatusNotDetermined:    //用戶還沒有選擇(第一次)
        {
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                if (status == PHAuthorizationStatusAuthorized) {
                    //授權(quán)
                    if (result) {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            result(YES);
                        });
                    }
                }else {
                    //其他
                    if (result) {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            result(NO);
                        });
                    }
                }
            }];
        }
            break;
        case PHAuthorizationStatusRestricted:       //家長控制
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case PHAuthorizationStatusDenied:           //用戶拒絕
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case PHAuthorizationStatusAuthorized:       //已授權(quán)
        {
            if (result) {
                result(YES);
            }
        }
            break;
        default:
            break;
    }
#endif
}

2顷扩、相機(jī)權(quán)限校驗(yàn),代碼如下:

/**
 校驗(yàn)相機(jī)權(quán)限
 */
+ (void)checkVideoAuth:(void (^)(BOOL auth))result {
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    switch (status) {
        case AVAuthorizationStatusNotDetermined:    //用戶還沒有選擇(第一次)
        {
            [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                if (granted) {  //授權(quán)
                    dispatch_async(dispatch_get_main_queue(), ^{
                        if (result) {
                            result(YES);
                        }
                    });
                }else {         //拒絕
                    dispatch_async(dispatch_get_main_queue(), ^{
                        if (result) {
                            result(NO);
                        }
                    });
                }
            }];
        }
            break;
        case AVAuthorizationStatusRestricted:       //家長控制
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case AVAuthorizationStatusDenied:           //用戶拒絕
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case AVAuthorizationStatusAuthorized:       //已授權(quán)
        {
            if (result) {
                result(YES);
            }
        }
            break;
        default:
            break;
    }
}

3慰毅、麥克風(fēng)權(quán)限校驗(yàn)隘截,代碼如下:

/**
 校驗(yàn)錄音權(quán)限
 */
+ (void)checkAudioAuth:(void (^)(BOOL auth))result {
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
    switch (status) {
        case AVAuthorizationStatusNotDetermined:    //用戶還沒有選擇(第一次)
        {
            [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
                if (granted) {  //授權(quán)
                    dispatch_async(dispatch_get_main_queue(), ^{
                        if (result) {
                            result(YES);
                        }
                    });
                }else {         //拒絕
                    dispatch_async(dispatch_get_main_queue(), ^{
                        if (result) {
                            result(NO);
                        }
                    });
                }
            }];
        }
            break;
        case AVAuthorizationStatusRestricted:       //家長控制
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case AVAuthorizationStatusDenied:           //用戶拒絕
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case AVAuthorizationStatusAuthorized:       //已授權(quán)
        {
            if (result) {
                result(YES);
            }
        }
            break;
        default:
            break;
    }
}

4、通訊錄權(quán)限校驗(yàn)汹胃,代碼如下:

/**
 校驗(yàn)通訊錄權(quán)限
 */
+ (void)checkAddressBookAuth:(void (^)(BOOL auth))result {
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0
    ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
    switch (status) {
        case kABAuthorizationStatusNotDetermined:    //用戶還沒有選擇(第一次)
        {
            ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
            ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
                if (granted) {  //授權(quán)
                    dispatch_async(dispatch_get_main_queue(), ^{
                        if (result) {
                            result(YES);
                        }
                    });
                }else {         //拒絕
                    dispatch_async(dispatch_get_main_queue(), ^{
                        if (result) {
                            result(NO);
                        }
                    });
                }
            });
        }
            break;
        case kABAuthorizationStatusRestricted:       //家長控制
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case kABAuthorizationStatusDenied:           //用戶拒絕
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case kABAuthorizationStatusAuthorized:       //已授權(quán)
        {
            if (result) {
                result(YES);
            }
        }
            break;
        default:
            break;
    }
#else
    CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
    switch (status) {
        case CNAuthorizationStatusNotDetermined:    //用戶還沒有選擇(第一次)
        {
            CNContactStore *contactStore = [[CNContactStore alloc] init];
            [contactStore requestAccessForEntityType:CNEntityTypeContacts
                                   completionHandler:^(BOOL granted, NSError * _Nullable error) {
                                       if (granted) {  //授權(quán)
                                           dispatch_async(dispatch_get_main_queue(), ^{
                                               if (result) {
                                                   result(YES);
                                               }
                                           });
                                       }else {         //拒絕
                                           dispatch_async(dispatch_get_main_queue(), ^{
                                               if (result) {
                                                   result(NO);
                                               }
                                           });
                                       }
                                   }];
        }
            break;
        case CNAuthorizationStatusRestricted:       //家長控制
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case CNAuthorizationStatusDenied:           //用戶拒絕
        {
            if (result) {
                result(NO);
            }
        }
            break;
        case CNAuthorizationStatusAuthorized:       //已授權(quán)
        {
            if (result) {
                result(YES);
            }
        }
            break;
        default:
            break;
    }
#endif
}

好了婶芭,到此結(jié)束。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末着饥,一起剝皮案震驚了整個濱河市犀农,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宰掉,老刑警劉巖呵哨,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圾结,死亡現(xiàn)場離奇詭異袱饭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谆刨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門戚绕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纹坐,“玉大人,你說我怎么就攤上這事≡抛樱” “怎么了果漾?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谷誓。 經(jīng)常有香客問我绒障,道長,這世上最難降的妖魔是什么捍歪? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任户辱,我火速辦了婚禮,結(jié)果婚禮上糙臼,老公的妹妹穿的比我還像新娘庐镐。我一直安慰自己,他們只是感情好变逃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布必逆。 她就那樣靜靜地躺著,像睡著了一般揽乱。 火紅的嫁衣襯著肌膚如雪名眉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天凰棉,我揣著相機(jī)與錄音损拢,去河邊找鬼。 笑死撒犀,一個胖子當(dāng)著我的面吹牛福压,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绘证,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼隧膏,長吁一口氣:“原來是場噩夢啊……” “哼哗讥!你這毒婦竟也來了嚷那?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤杆煞,失蹤者是張志新(化名)和其女友劉穎魏宽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體决乎,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡队询,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了构诚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚌斩。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖范嘱,靈堂內(nèi)的尸體忽然破棺而出送膳,到底是詐尸還是另有隱情员魏,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布叠聋,位于F島的核電站撕阎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏碌补。R本人自食惡果不足惜虏束,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厦章。 院中可真熱鬧镇匀,春花似錦、人聲如沸袜啃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囊骤。三九已至晃择,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間也物,已是汗流浹背宫屠。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滑蚯,地道東北人浪蹂。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像告材,于是被迫代替她去往敵國和親坤次。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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