ios 9+ 访问权限总结

1.判断相册权限

导入<Photos/Photos.h>
+(BOOL)judgeIsHavePhotoAlbumAuthority {
    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    if (status == PHAuthorizationStatusDenied || status == PHAuthorizationStatusRestricted) {
        return NO;
    }
    return YES;
}];
}

请求打开相册
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
        if (status == PHAuthorizationStatusAuthorized) {
            //授权成功
        } else {
            //授权失败
    }];

2.判断相机权限

导入<AVFoundation/AVFoundation.h>
+ (BOOL)judgeIsHaveCameraAuthority {
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if (status == AVAuthorizationStatusDenied || status ==AVAuthorizationStatusRestricted) {
        return NO;
    }
    return YES;
}

请求使用相机
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
        if (granted) {
            //授权成功
        } else {
           //授权失败
        }
    }];

3.判断麦克风权限

导入<AVFoundation/AVFoundation.h>
+ (BOOL)judgeIsHaveRecordAuthority {
    AVAudioSessionRecordPermission status = [[AVAudioSession sharedInstance] recordPermission];
    if (status == AVAudioSessionRecordPermissionDenied) {
        return NO;
    }
    return YES;
}

请求使用麦克风
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
        if (granted) {
            //授权成功
        } else {
           //授权失败
        }
    }];

4.判断通讯录权限

导入<AddressBook/AddressBook.h>
+ (BOOL)judgeIsAddressBookAuthority {
      CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
        if (status == CNAuthorizationStatusDenied || status == CNAuthorizationStatusRestricted) {
            return NO;
        }
        return YES;
}

5.判断定位权限

导入<CoreLocation/CoreLocation.h>
+ (BOOL)judgeIsHaveLocationAuthority {
    CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
    BOOL enabled = [CLLocationManager locationServicesEnabled];
    if (!enabled || status == kCLAuthorizationStatusDenied || status == kCLAuthorizationStatusRestricted ) {
        return NO;
    }
    return YES;
}

6.判断日历权限

导入<EventKit/EventKit.h>
+ (BOOL)judgeIsHaveCalendarAuthority {
    EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
    if (status == EKAuthorizationStatusDenied || status == EKAuthorizationStatusRestricted) {
        return NO;
    }
    return YES;
}

请求打卡日历
 EKEventStore *eventStore = [[EKEventStore alloc] init];
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
         if (granted) {
            //授权成功
        } else {
           //授权失败
        }
    }];

7.判断蓝牙权限

+(BOOL)judgeIsHaveBluetoothAuthority {
    CBPeripheralManagerAuthorizationStatus status = [CBPeripheralManager authorizationStatus];
    if (status == CBPeripheralManagerAuthorizationStatusDenied || status == CBPeripheralManagerAuthorizationStatusRestricted) {
        return NO;
    }
    return YES;
}

注意在Plist文件中添加对应的权限说明

屏幕快照 2017-08-29 下午4.04.22.png
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容