JQAuthorizationTools
JQAuthorizationTools
獲取用戶權(quán)限
? ?功能:
? ? ? ???? 1.獲取/判斷相機(jī)權(quán)限
? ? ? ???? 2.獲取/判斷相冊(cè)權(quán)限
? ? ? ? ? 3.獲取/判斷麥克風(fēng)權(quán)限
? ? ? ??? 4.獲取/判斷日歷權(quán)限
? ? ? ??? 5.獲取/判斷通訊錄權(quán)限
? ? ? ??? 6.判斷定位權(quán)限
? ? ? ?plist 文件設(shè)置提示
? ? ? ? ? ?NSCalendarsUsageDescription
? ? ? ? ? ?請(qǐng)求訪問(wèn)日歷
? ? ? ? ? ?NSCameraUsageDescription
? ? ? ? ? ?請(qǐng)求訪問(wèn)相機(jī)
? ? ? ? ? ?NSContactsUsageDescription
? ? ? ? ? ?請(qǐng)求訪問(wèn)通訊錄
? ? ? ? ? ?NSLocationAlwaysAndWhenInUseUsageDescription
? ? ? ? ? ?請(qǐng)求使用您的定位功能
? ? ? ? ? ?NSLocationAlwaysUsageDescription
? ? ? ? ? ?始終訪問(wèn)地理位置
? ? ? ? ? ?NSLocationWhenInUseUsageDescription
? ? ? ? ? ?在使用期間訪問(wèn)地理位置
? ? ? ? ? ?NSMicrophoneUsageDescription
? ? ? ? ? ?請(qǐng)求訪問(wèn)麥克風(fēng)
? ? ? ? ? ?NSPhotoLibraryUsageDescription
? ? ? ? ? ?請(qǐng)求訪問(wèn)相冊(cè)
使用:1.直接將AuthorizationTool 文件拖入項(xiàng)目
?????????? 2.引入 #import "JQAuthorizationTools.h"
獲取/判斷相機(jī)訪問(wèn)權(quán)限
#pragma mark ? ? ? ? ? ?--- 獲取用戶相機(jī)權(quán)限 ---
/**
獲取用戶的相機(jī)訪問(wèn)權(quán)限。
????? authorized ? ? 用戶允許訪問(wèn)相機(jī)
????? denied ? ? ? ? 用戶拒絕當(dāng)前應(yīng)用訪問(wèn)相機(jī)
????? restricted ? ? 因?yàn)橄到y(tǒng)原因, 無(wú)法訪問(wèn)相機(jī)
????? noCamera ? ? ? 沒(méi)有檢測(cè)到相機(jī)
*/
‘’‘+ (void)AVCameraAuthorizationTools_StatusAuthorizedBlock:(void (^)(void))authorized
? ? ? ? StatusDeniedBlock:(void (^)(void))denied
?? StatusRestrictedBlock:(void (^)(void))restricted
??????? EquipmentWithoutCameraBlock:(void (^)(void))noCamera;
? ? ? [JQAuthorizationTools AVCameraAuthorizationTools_StatusAuthorizedBlock:^{ ? ? ? ? ? //已授權(quán)
? ? ? ? ? ? ? [self alerviewmessage:@"相機(jī)權(quán)限已開(kāi)啟"];
? ? ?} StatusDeniedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //已關(guān)閉
? ? ? ? ? ? ? ? ? ? [self alertViewControllerWithmessage:[NSString stringWithFormat:@"相機(jī)權(quán)限未開(kāi)啟 \n 可通過(guò) [設(shè)置 -> 隱私 -> 相機(jī) - %@] 打開(kāi)訪問(wèn)開(kāi)關(guān)",_app_name]
? ? ?actionBlock:^(UIAlertAction * _Nonnull action) {
? ? ? ? ?[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
? ? ?}];
? ? ?} StatusRestrictedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //限制訪問(wèn)
? ? ? ? ?[self alerviewmessage:@"相機(jī)訪問(wèn)被限制"];
? ? ? } EquipmentWithoutCameraBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //未檢測(cè)到功能
? ? ? ? ?[self alerviewmessage:@"未檢測(cè)到您的相機(jī)"];
? ? ?}];
獲取/判斷相冊(cè)權(quán)限
#pragma mark ? ? ? ? ? ?--- ?獲取相冊(cè)權(quán)限 ?---
/**
??? authorized ? ? ? ? 用戶允許訪問(wèn)相冊(cè)
??? denied ? ? ? ? ? ? 用戶拒絕當(dāng)前應(yīng)用訪問(wèn)相冊(cè)
??? restricted ? ? ? ? 因?yàn)橄到y(tǒng)原因, 無(wú)法訪問(wèn)相冊(cè)
??? noPhoto ? ? ? ? ? ?沒(méi)有檢測(cè)到相冊(cè)
*/
+ (void)UIImagePickerStatus_AuthorizedBlock:(void(^)(void))authorized
????????????????????????? DeniedBlock:(void(^)(void))denied
???????????????????????? RestrictedBlock:(void(^)(void))restricted
??????????????????????? noPhotoBlock:(void(^)(void))noPhoto;
[JQAuthorizationTools UIImagePickerStatus_AuthorizedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ?//已授權(quán)
[self alerviewmessage:@"相冊(cè)權(quán)限已開(kāi)啟"];
} DeniedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//已關(guān)閉
? ? ? ?????? [self alertViewControllerWithmessage:[NSString stringWithFormat:@"相冊(cè)權(quán)限未開(kāi)啟 \n 可通過(guò) [設(shè)置 -> 隱私 -> 相冊(cè) - %@] 打開(kāi)訪問(wèn)開(kāi)關(guān)",_app_name]
actionBlock:^(UIAlertAction * _Nonnull action) {
? ? ? ?????? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}];
} RestrictedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//限制訪問(wèn)
? ? ? ? ? ? ?? [self alerviewmessage:@"相冊(cè)訪問(wèn)被限制"];
} noPhotoBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //未檢測(cè)到功能
????????????? [self alerviewmessage:@"未檢測(cè)到您的相冊(cè)"];
}];
獲取/判斷麥克風(fēng)權(quán)限
#pragma mark ? ? ? ? ? ?--- ? 獲取麥克風(fēng) ? ---
/**
authorized ? ? ? ? 用戶允許訪問(wèn)麥克風(fēng)
restricted ? ? ? ? 因?yàn)橄到y(tǒng)原因, 無(wú)法訪問(wèn)麥克風(fēng)
denied ? ? ? ? ? ? 用戶拒絕當(dāng)前應(yīng)用訪問(wèn)麥克風(fēng)
noAudio ? ? ? ? ? ?沒(méi)有檢測(cè)到麥克風(fēng)
*/
+ (void)AudioAuthorizationStatus_AuthorizedBlock:(void(^)(void))authorized
DeniedBlock:(void(^)(void))denied
RestrictedBlock:(void(^)(void))restricted
noAudioBlock:(void(^)(void))noAudio;
[JQAuthorizationTools AudioAuthorizationStatus_AuthorizedBlock:^{ ? ? ? ? ? ? ? ? ? //已授權(quán)
? ? ? ?[self alerviewmessage:@"麥克風(fēng)權(quán)限已開(kāi)啟"];
} DeniedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//已關(guān)閉
? ? ? ?[self alertViewControllerWithmessage:[NSString stringWithFormat:@"麥克風(fēng)權(quán)限未開(kāi)啟 \n 可通過(guò) [設(shè)置 -> 隱私 -> 麥克風(fēng) - %@] 打開(kāi)訪問(wèn)開(kāi)關(guān)",_app_name]
actionBlock:^(UIAlertAction * _Nonnull action) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}];
} RestrictedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//限制訪問(wèn)
? ? ? ?[self alerviewmessage:@"麥克風(fēng)訪問(wèn)被限制"];
} noAudioBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //未檢測(cè)到功能
? ? ? ?[self alerviewmessage:@"未檢測(cè)到您的麥克風(fēng)"];
}];
獲取/判斷日歷權(quán)限
#pragma mark ? ? ? ? ? ? --- ? 獲取日歷權(quán)限 ? ---
/**
authorized ? ? ? ? 用戶允許訪問(wèn)日歷
restricted ? ? ? ? 因?yàn)橄到y(tǒng)原因, 無(wú)法訪問(wèn)日歷
denied ? ? ? ? ? ? 用戶拒絕當(dāng)前應(yīng)用訪問(wèn)日歷
noEvent ? ? ? ? ? ?沒(méi)有檢測(cè)到日歷
*/
+ (void)EventAuthorizationStatus_AuthorizedBlock:(void(^)(void))authorized
DeniedBlock:(void(^)(void))denied
RestrictedBlock:(void(^)(void))restricted
noEventBlock:(void(^)(void))noEvent;
[JQAuthorizationTools EventAuthorizationStatus_AuthorizedBlock:^{ ? ? ? ? ? ? ? ? ? //已授權(quán)
? ? ? ?[self alerviewmessage:@"日歷權(quán)限已開(kāi)啟"];
} DeniedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//已關(guān)閉
? ? ? ?[self alertViewControllerWithmessage:[NSString stringWithFormat:@"日歷權(quán)限未開(kāi)啟 \n 可通過(guò) [設(shè)置 -> 隱私 -> 日歷 - %@] 打開(kāi)訪問(wèn)開(kāi)關(guān)",_app_name]
actionBlock:^(UIAlertAction * _Nonnull action) {
? ? ? ?[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}];
} RestrictedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//限制訪問(wèn)
? ? ? ?[self alerviewmessage:@"日歷訪問(wèn)被限制"];
} noEventBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //未檢測(cè)到功能
? ? ? ?[self alerviewmessage:@"未檢測(cè)到您的日歷"];
}];
獲取/判斷通訊錄權(quán)限
/**
獲取通訊錄權(quán)限
authorized ? ? ? ? 用戶允許訪問(wèn)通訊錄
restricted ? ? ? ? 因?yàn)橄到y(tǒng)原因, 無(wú)法訪問(wèn)通訊錄
denied ? ? ? ? ? ? 用戶拒絕當(dāng)前應(yīng)用訪問(wèn)通訊錄
noContact ? ? ? ? ?沒(méi)有檢測(cè)到通訊錄
*/
+ (void)ContactAuthorizationStatus_AuthorizedBlock:(void(^)(void))authorized
DeniedBlock:(void(^)(void))denied
RestrictedBlock:(void(^)(void))restricted
noContactBlock:(void(^)(void))noContact;
[JQAuthorizationTools ContactAuthorizationStatus_AuthorizedBlock:^{ ? ? ? ? ? ? ? ? ? //已授權(quán)
? ? ? ?[self alerviewmessage:@"通訊錄權(quán)限已開(kāi)啟"];
} DeniedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//已關(guān)閉
? ? ? ?[self alertViewControllerWithmessage:[NSString stringWithFormat:@"通訊錄權(quán)限未開(kāi)啟 \n 可通過(guò) [設(shè)置 -> 隱私 -> 通訊錄 - %@] 打開(kāi)訪問(wèn)開(kāi)關(guān)",_app_name]
? ? ? ? ? ?actionBlock:^(UIAlertAction * _Nonnull action) {
? ? ? ?[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
? ? ? ?}];
} RestrictedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//限制訪問(wèn)
? ? ? ?[self alerviewmessage:@"通訊錄訪問(wèn)被限制"];
} noContactBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //未檢測(cè)到功能
? ? ? ?[self alerviewmessage:@"未檢測(cè)到您的通訊錄"];
}];
判斷定位權(quán)限
/**
always ? ? ? ? ? ? 用戶允許應(yīng)用一直允許訪問(wèn)定位
WhenInUse ? ? ? ? ?用戶只允許在使用應(yīng)用程序時(shí)訪問(wèn)定位
denied ? ? ? ? ? ? 用戶拒絕當(dāng)前應(yīng)用訪問(wèn)定位權(quán)限
noContact ? ? ? ? ?沒(méi)有檢測(cè)到定位權(quán)限
*/
+ (void)locationAuthorizationStatus_AlwaysBlock:(void(^)(void))always
? ? ? ?WhenInUseBlock:(void(^)(void))WhenInUse
? ? ? ?DeniedBlock:(void(^)(void))Denied
? ? ? ?RestrictedBlock:(void(^)(void))Restricted
? ? ? ?noLocationBlock:(void(^)(void))noLocation;
[JQAuthorizationTools locationAuthorizationStatus_AlwaysBlock:^{ ? ? ? ? ? ? ? ? ? ? //用戶允許一直訪問(wèn)定位權(quán)限
? ? ? ?[self alerviewmessage:@"后臺(tái)定位權(quán)限已開(kāi)啟"];
} WhenInUseBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//用戶允許在程序使用期間訪問(wèn)權(quán)限
? ? ? ?[self alerviewmessage:@"前臺(tái)臺(tái)定位權(quán)限已開(kāi)啟"];
} DeniedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //已關(guān)閉
? ? ? ?[self alertViewControllerWithmessage:[NSString stringWithFormat:@"定位權(quán)限未開(kāi)啟 \n 可通過(guò) [設(shè)置 -> 隱私 -> 位置 - %@] 設(shè)置為 ->始終/使用期間",_app_name]
? ? ? ? ? ?actionBlock:^(UIAlertAction * _Nonnull action) {
? ? ? ? ? ?[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
? ? ? ? ? ?}];
} RestrictedBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //限制訪問(wèn)
? ? ? ?[self alerviewmessage:@"定位訪問(wèn)被限制"];
} noLocationBlock:^{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //未檢測(cè)到功能
? ? ? ?[self alerviewmessage:@"未檢測(cè)到您的定位"];
}];
定位權(quán)限的獲取需要單獨(dú)拿出來(lái)設(shè)置
AppDelegate 代理去設(shè)置CLLocationManager
遵循一下的協(xié)議來(lái)進(jìn)行權(quán)限的獲取
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
switch (status) {
case kCLAuthorizationStatusNotDetermined:
? ? ? ? ? ? if ([manager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
? ? ? ? ? ? ? ? [manager requestAlwaysAuthorization];
? ? ? ? ? ? ? ? }
兩種方法選擇一種使用
? ? ? ? ? ?//if ([manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
? ? ? ? ? ?// ?[manager requestWhenInUseAuthorization];
? ? ? ? ? ?//}
?break;
default:
? ? ? ? ?break;
}
}