iOS开发检测是否开启定位、是否允许消息推送等权限的实例

2020-01-21 04:03:54于海丽


#import <Photos/Photos.h>#import <AssetsLibrary/AssetsLibrary.h> 


+ (void)openAlbumServiceWithBlock:(ReturnBlock)returnBlock 
{ 
  BOOL isOpen; 
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0 
  PHAuthorizationStatus authStatus = [PHPhotoLibrary authorizationStatus]; 
  isOpen = YES; 
  if (authStatus == PHAuthorizationStatusRestricted || authStatus == PHAuthorizationStatusDenied) { 
    isOpen = NO; 
  } 
#else 
  ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus]; 
  isOpen = YES; 
  if (author == ALAuthorizationStatusRestricted || author == ALAuthorizationStatusDenied) { 
    isOpen = NO; 
  } 
#endif 
  if (returnBlock) { 
    returnBlock(isOpen); 
  } 
} 

5.iOS开发检测是否开启麦克风:

需要导入:


#import <AVFoundation/AVFoundation.h> 


+ (void)openRecordServiceWithBlock:(ReturnBlock)returnBlock 
{ 
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0 
  AVAudioSessionRecordPermission permissionStatus = [[AVAudioSession sharedInstance] recordPermission]; 
  if (permissionStatus == AVAudioSessionRecordPermissionUndetermined) { 
    [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { 
      if (returnBlock) { 
        returnBlock(granted); 
      } 
    }]; 
  } else if (permissionStatus == AVAudioSessionRecordPermissionDenied) { 
    returnBlock(NO); 
  } else { 
    returnBlock(YES); 
  } 
#endif 
} 

6.iOS开发检测是否开启通讯录:

需要导入:


#import <AddressBook/AddressBook.h>#import <Contacts/Contacts.h> 


+ (void)openContactsServiceWithBolck:(ReturnBlock)returnBolck
{
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
 CNAuthorizationStatus cnAuthStatus = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
 if (cnAuthStatus == CNAuthorizationStatusNotDetermined) {
  CNContactStore *store = [[CNContactStore alloc] init];
  [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError *error) {
   if (returnBolck) {
    returnBolck(granted);
   }
  }];
 } else if (cnAuthStatus == CNAuthorizationStatusRestricted || cnAuthStatus == CNAuthorizationStatusDenied) {
  if (returnBolck) {
   returnBolck(NO);
  }
 } else {
  if (returnBolck) {
   returnBolck(YES);
  }
 }
#else
 //ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
 ABAddressBookRef addressBook = ABAddressBookCreate();
 ABAuthorizationStatus authStatus = ABAddressBookGetAuthorizationStatus();
 if (authStatus != kABAuthorizationStatusAuthorized) {
  ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
   dispatch_async(dispatch_get_main_queue(), ^{
    if (error) {
     NSLog(@"Error: %@", (__bridge NSError *)error);
     if (returnBolck) {
      returnBolck(NO);
     }
    } else {
     if (returnBolck) {
      returnBolck(YES);
     }
    }
   });
  });
 } else {
  if (returnBolck) {
   returnBolck(YES);
  }
 }
#endif
}