美文网首页
iOS媒体、相册、联系人权限检测

iOS媒体、相册、联系人权限检测

作者: _我和你一样 | 来源:发表于2021-06-22 17:35 被阅读0次
+ (void)checkAuthorizationForMediaType:(AVMediaType)mediaType
                            completion:(void (^)(BOOL authorized, BOOL shouldSetting))completion {
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
    switch (status) {
        case AVAuthorizationStatusDenied: {
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(NO, YES);
            });
        } break;
        case AVAuthorizationStatusRestricted: {
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(NO, NO);
            });
        } break;
        case AVAuthorizationStatusAuthorized: {
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(YES, NO);
            });
        } break;
        case AVAuthorizationStatusNotDetermined: {
            [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
                dispatch_async(dispatch_get_main_queue(), ^{
                    !completion ?: completion(granted, NO);
                });
            }];
        } break;

        default:
            break;
    }
}

+ (void)checkAuthorizationForPhotoLibraryCompletion:(void (^)(BOOL authorized, BOOL shouldSetting))completion {
    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    switch (status) {
        case PHAuthorizationStatusDenied: {
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(NO, YES);
            });
        } break;
        case PHAuthorizationStatusRestricted: {
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(NO, NO);
            });
        } break;
        case PHAuthorizationStatusAuthorized: {
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(YES, NO);
            });
        } break;
        case PHAuthorizationStatusNotDetermined: {
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                dispatch_async(dispatch_get_main_queue(), ^{
                    if (status == PHAuthorizationStatusAuthorized) {
                        !completion ?: completion(YES, NO);
                    } else {
                        !completion ?: completion(NO, NO);
                    }
                });
            }];
        } break;

        default:
            break;
    }
}

+ (void)checkSystemContactsAuthorizationCompletion:(void (^)(BOOL, BOOL))completion {
    switch ([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]) {
        case CNAuthorizationStatusAuthorized: {
            // 存在权限
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(YES, NO);
            });
        } break;

        case CNAuthorizationStatusNotDetermined: {
            // 权限未知
            CNContactStore *store = [[CNContactStore alloc] init];
            [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError *_Nullable error) {
                dispatch_async(dispatch_get_main_queue(), ^{
                    !completion ?: completion(granted, !granted);
                });
            }];
        } break;
        case CNAuthorizationStatusRestricted:
        case CNAuthorizationStatusDenied: {
            // 如果没有权限 需要提示
            dispatch_async(dispatch_get_main_queue(), ^{
                !completion ?: completion(NO, YES);
            });
        } break;
    }
}

相关文章

网友评论

      本文标题:iOS媒体、相册、联系人权限检测

      本文链接:https://www.haomeiwen.com/subject/qxsmyltx.html