最近項目中用到系統(tǒng)隱私權(quán)限的管理,所以對iOS常用隱私權(quán)限做一下總結(jié)博助,方便以后查閱
iOS常用隱私權(quán)限
<key>NSBluetoothPeripheralUsageDescription</key>
<string>需要獲取藍牙權(quán)限</string>
<key>NSCalendarsUsageDescription</key>
<string>日歷</string>
<key>NSCameraUsageDescription</key>
<string>需要獲取您的攝像頭信息</string>
<key>NSContactsUsageDescription</key>
<string>需要獲取您的通訊錄權(quán)限</string>
<key>NSHealthShareUsageDescription</key>
<string>健康分享權(quán)限</string>
<key>NSHealthUpdateUsageDescription</key>
<string>健康數(shù)據(jù)更新權(quán)限</string>
<key>NSHomeKitUsageDescription</key>
<string>HomeKit權(quán)限</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>一直定位權(quán)限</string>
<key>NSLocationUsageDescription</key>
<string>定位權(quán)限</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>使用app期間定位權(quán)限</string>
<key>NSMicrophoneUsageDescription</key>
<string>需要獲取您的麥克風權(quán)限</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>需要獲取您的相冊信息</string>
<key>NSRemindersUsageDescription</key>
<string>提醒事項</string>
<key>NSSiriUsageDescription</key>
<string>需要獲取您的Siri權(quán)限</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>語音識別權(quán)限</string>
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>AppleTV權(quán)限</string>
<key>NSAppleMusicUsageDescription</key>
<string>Add tracks to your music library.</string>
<key>NSMotionUsageDescription</key>
<string>運動與健身權(quán)限</string>
跳轉(zhuǎn)到設(shè)置界面
- (void)openSettings{
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL: url options:@{} completionHandler:^(BOOL success) {
dispatch_async(dispatch_get_main_queue(), ^{
[self loadData];
});
}];
}
}
相機權(quán)限
- 相機權(quán)限判斷是否開啟
//Privacy - Camera
+ (BOOL)cameraPrivacy{
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied||status ==AVAuthorizationStatusNotDetermined)
{
// 無權(quán)限
// do something...
return NO;
}
return YES;
}
- 相機權(quán)限授權(quán)
- (void)requestCameraPrivacy{
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (status == AVAuthorizationStatusNotDetermined){
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[self loadData];
});
}
}];
}else{
[self openSettings];
}
}
相冊權(quán)限
- 相冊權(quán)限判斷是否開啟
+ (BOOL)photoLibraryPrivacy{
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied||status ==PHAuthorizationStatusNotDetermined)
{
// 無權(quán)限
// do something...
return NO;
}
return YES;
}
- 相冊權(quán)限授權(quán)
- (void)requestPhotoLibraryPrivacy{
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status ==PHAuthorizationStatusNotDetermined)
{
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
dispatch_async(dispatch_get_main_queue(), ^{
[self loadData];
});
}];
}else{
[self openSettings];
}
}
麥克風權(quán)限
- 麥克風權(quán)限判斷是否開啟
+ (BOOL)microPhoneAuthPrivacy{
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied||status ==AVAuthorizationStatusNotDetermined)
{
// 無權(quán)限
// do something...
return NO;
}
return YES;
}
- 授權(quán)
//麥克風
-(void) requestMicroPhoneAuth
{
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
if (status == AVAuthorizationStatusNotDetermined){
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[self loadData];
});
}
}];
}else{
[self openSettings];
}
}
定位權(quán)限
- 定位權(quán)限判斷是否開啟
+ (BOOL)locationPrivacy{
if ([CLLocationManager locationServicesEnabled]) {
CLAuthorizationStatus status = CLLocationManager.authorizationStatus;
if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse||
status == kCLAuthorizationStatusAuthorizedAlways) {
return YES;
}
return NO;
}
return NO;
}
- 授權(quán)
注意: CLLocationManager 需要寫成全局對象险污,否次會授權(quán)框會消失
- (void)requestLocationPrivacy{
self.locationManager = [CLLocationManager new];
if ([CLLocationManager locationServicesEnabled]) {
CLAuthorizationStatus status = CLLocationManager.authorizationStatus;
if (status == kCLAuthorizationStatusNotDetermined) {
[self.locationManager requestWhenInUseAuthorization];
}else{
[self openSettings];
}
}
}
通訊錄權(quán)限
- 通訊錄權(quán)限判斷是否開啟
+(BOOL)contactsPrivacy{
CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
return status == CNAuthorizationStatusAuthorized;
}
- 授權(quán)
- (void)requestAuthorizationForAddressBook {
CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
if(authorizationStatus == CNAuthorizationStatusNotDetermined) {
CNContactStore *contactStore = [[CNContactStore alloc] init];
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if(granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[self loadData];
});
} else{
NSLog(@"授權(quán)失敗, error=%@", error);
}
}];
}else{
[self openSettings];
}
}