iOS 獲取用戶權(quán)限

github 下載地址

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;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容