獲取權(quán)限狀態(tài)前枫疆,需要先在plist文件添加權(quán)限語(yǔ)句爵川,有的還需要在Capabilities設(shè)置里打開(kāi)對(duì)應(yīng)開(kāi)關(guān)。
以下是可能用到的庫(kù)
下面是具體實(shí)現(xiàn)代碼
//充電狀態(tài)
+ (BOOL)NativePhoneBatteryState
{
? ? //打開(kāi)電池的監(jiān)聽(tīng)
? ? [UIDevice currentDevice].batteryMonitoringEnabled = YES;
? ? /*
?? ? //battery的狀態(tài)
?? ? [UIDevice currentDevice].batteryState分為:
?? ? UIDeviceBatteryStateUnknown,? ? 未知
?? ? UIDeviceBatteryStateUnplugged,? // 未充電
?? ? UIDeviceBatteryStateCharging,? ? // 正在充電
?? ? UIDeviceBatteryStateFull,? ? ? ? ? ? // 滿電
?? ? */
? ? //獲取電池的狀態(tài)
? ? UIDeviceBatteryState BatteryState = [UIDevice currentDevice].batteryState;
? ? switch(BatteryState) {
? ? ? ? case UIDeviceBatteryStateUnknown:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case UIDeviceBatteryStateCharging:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? case UIDeviceBatteryStateFull:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//網(wǎng)絡(luò)狀態(tài)
+ (BOOL)NativeGetNetworkState
{
? ? Reachability *reach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
? ? switch ([reach currentReachabilityStatus]) {
? ? ? ? case NotReachable:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case ReachableViaWiFi:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? case ReachableViaWWAN:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//相冊(cè)狀態(tài)
+ (BOOL)NativeGetPhonePhoto{
? ? PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
? ? if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied || status == PHAuthorizationStatusNotDetermined)
? ? {
? ? ? ? returnNO;
? ? }else{
? ? ? ? returnYES;
? ? }
}
//相機(jī)狀態(tài)
+ (BOOL)NativeGetPhoneCamera{
? ? AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
? ? if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied || status == AVAuthorizationStatusNotDetermined)
? ? {
? ? ? ? returnNO;
? ? }else{
? ? ? ? returnYES;
? ? }
}
//定位狀態(tài)
+ (BOOL)NativeGetPhoneLocation{
? ? if([CLLocationManager authorizationStatus] ==kCLAuthorizationStatusDenied || [CLLocationManager authorizationStatus] ==kCLAuthorizationStatusNotDetermined || [CLLocationManager authorizationStatus] ==kCLAuthorizationStatusRestricted) {
? ? ? ? returnNO;
? ? }else{
? ? ? ? returnYES;
? ? }
}
//麥克風(fēng)狀態(tài)
+ (BOOL)NativeGetPhoneMicrophone{
? ? AVAuthorizationStatus statusAudio = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
? ? if(statusAudio == AVAuthorizationStatusDenied || statusAudio == AVAuthorizationStatusRestricted || statusAudio == AVAuthorizationStatusNotDetermined)
? ? {
? ? ? ? returnNO;
? ? }else{
? ? ? ? returnYES;
? ? }
}
//通訊錄狀態(tài)
+ (BOOL)NativeGetPhoneContacts{
? ? CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
? ? switch(status) {
? ? ? ? case CNAuthorizationStatusNotDetermined:
?? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case CNAuthorizationStatusRestricted:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case CNAuthorizationStatusDenied:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case CNAuthorizationStatusAuthorized:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//藍(lán)牙狀態(tài)
+ (BOOL)NativeGetPhoneBlue{
? ? CBPeripheralManagerAuthorizationStatus authStatus = [CBPeripheralManager authorizationStatus];
? ? switch(authStatus) {
? ? ? ? case CBPeripheralManagerAuthorizationStatusNotDetermined:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case CBPeripheralManagerAuthorizationStatusRestricted:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case CBPeripheralManagerAuthorizationStatusDenied:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case CBPeripheralManagerAuthorizationStatusAuthorized:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//日歷狀態(tài)
+ (BOOL)NativeGetPhoneCalendars{
? ? EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
? ? switch(status) {
? ? ? ? case EKAuthorizationStatusNotDetermined:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case EKAuthorizationStatusRestricted:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case EKAuthorizationStatusDenied:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case EKAuthorizationStatusAuthorized:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
// Face ID狀態(tài)
+ (BOOL)NativeGetPhoneFaceID{
? ? if ([UIDevice currentDevice].systemVersion.floatValue < 11.0f) {
? ? ? ? returnNO;
? ? }
? ? LAContext*authenticationContext = [[LAContextalloc]init];
? ? NSError*error =nil;
?? staticBOOLfaceBool =NO;
? ? BOOL canEvaluatePolicy = [authenticationContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
? ? if(canEvaluatePolicy) {
? ? ? ? if(authenticationContext.biometryType==LABiometryTypeFaceID) {
? ? ? ? ? ? [authenticationContextevaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"" reply:^(BOOL success, NSError * _Nullable error) {
? ? ? ? ? ? ? ? if(error) {}else{
? ? ? ? ? ? ? ? ? ? if(success) {
? ? ? ? ? ? ? ? ? ? ? ? faceBool =YES;
? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? faceBool =NO;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }];
? ? ? ? }else{
? ? ? ? ? ? faceBool =NO;
? ? ? ? }
? ? }
? ? returnfaceBool;
}
//健康分享狀態(tài)
+ (BOOL)NativeGetPhoneHealthShare{
? ? if ([HKHealthStore isHealthDataAvailable]) {
? ? ? ? HKHealthStore *healthStore = [[HKHealthStore alloc] init];
? ? ? ? HKQuantityType *heartRateType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];
? ? ? ? HKAuthorizationStatusstatus = [healthStoreauthorizationStatusForType:heartRateType];
? ? ? ? switch(status) {
? ? ? ? ? ? case HKAuthorizationStatusNotDetermined:
? ? ? ? ? ? ? ? returnNO;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case HKAuthorizationStatusSharingDenied:
? ? ? ? ? ? ? ? returnNO;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case HKAuthorizationStatusSharingAuthorized:
? ? ? ? ? ? ? ? returnYES;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? returnNO;
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }else{
? ? ? ? returnNO;
? ? }
}
//媒體資料庫(kù)狀態(tài)
+ (BOOL)NativeGetPhoneAppleMusic{
? ? if ([UIDevice currentDevice].systemVersion.floatValue < 9.3f) {
?? ? ? returnNO;
? ? }
? ? SKCloudServiceAuthorizationStatus status = [SKCloudServiceController authorizationStatus];
? ? switch(status) {
? ? ? ? case SKCloudServiceAuthorizationStatusNotDetermined:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case SKCloudServiceAuthorizationStatusRestricted:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case SKCloudServiceAuthorizationStatusDenied:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case SKCloudServiceAuthorizationStatusAuthorized:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//提醒事項(xiàng)狀態(tài)
+ (BOOL)NativeGetPhoneReminders{
? ? EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeReminder];
? ? switch(status) {
? ? ? ? case EKAuthorizationStatusNotDetermined:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case EKAuthorizationStatusRestricted:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case EKAuthorizationStatusDenied:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case EKAuthorizationStatusAuthorized:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//Siri狀態(tài)
+ (BOOL)NativeGetPhoneSiri{
? ? if ([UIDevice currentDevice].systemVersion.floatValue < 10.0f) {
?? ? ? returnNO;
? ? }
? ? INSiriAuthorizationStatus status = [INPreferences siriAuthorizationStatus];
? ? switch(status) {
? ? ? ? case INSiriAuthorizationStatusNotDetermined:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case EKAuthorizationStatusRestricted:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case INSiriAuthorizationStatusDenied:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case INSiriAuthorizationStatusAuthorized:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//語(yǔ)音識(shí)別狀態(tài)
+ (BOOL)NativeGetPhoneSpeechRecognition{
? ? if ([UIDevice currentDevice].systemVersion.floatValue < 10.0f) {
?? ? ? returnNO;
? ? }
? ? SFSpeechRecognizerAuthorizationStatus status = [SFSpeechRecognizer authorizationStatus];
? ? switch(status) {
? ? ? ? case SFSpeechRecognizerAuthorizationStatusNotDetermined:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case SFSpeechRecognizerAuthorizationStatusRestricted:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case SFSpeechRecognizerAuthorizationStatusDenied:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? ? ? case SFSpeechRecognizerAuthorizationStatusAuthorized:
? ? ? ? ? ? returnYES;
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? returnNO;
? ? ? ? ? ? break;
? ? }
}
//推送狀態(tài)
+ (BOOL)NativeGetPhonepush{
? ? return [UIApplication sharedApplication].isRegisteredForRemoteNotifications;;
}