ios 简书 获取通讯录信息_ios 各种权限整理
联网权限
引入头文件 @import CoreTelephony;
应用启动后,检测应用中是否有联网权限 CTCellularData *cellularData = [[CTCellularData alloc]init];
cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state){
//获取联网状态
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
break;
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
break;
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
break;
default:
break;
};
};
查询应用是否有联网功能 CTCellularData *cellularData = [[CTCellularData alloc]init];
CTCellularDataRestrictedState state = cellularData.restrictedState;
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
break;
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
break;
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
break;
default:
break;
}
相册权限--iOS 9.0之前
导入头文件@import AssetsLibrary;
检查是否有相册权限 ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch (status) {
case ALAuthorizationStatusAuthorized:
NSLog(@"Authorized");
break;
case ALAuthorizationStatusDenied:
NSLog(@"Denied");
break;
case ALAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
break;
case ALAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
default:
break;
}
相册权限--iOS 8.0之后
导入头文件@import Photos;
检查是否有相册权限 PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
switch (photoAuthorStatus) {
case PHAuthorizationStatusAuthorized:
NSLog(@"Authorized");
break;
case PHAuthorizationStatusDenied:
NSLog(@"Denied");
break;
case PHAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
break;
case PHAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
default:
break;
}
![Uploading 144446-b8aca7ba38c5f8c0_695906.png . . .]获取相册权限
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
NSLog(@"Authorized");
}else{
NSLog(@"Denied or Restricted");
}
}];
相机和麦克风权限
导入头文件@import AVFoundation;
检查是否有相机或麦克风权限 AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//相机权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];//麦克风权限
switch (AVstatus) {
case AVAuthorizationStatusAuthorized:
NSLog(@"Authorized");
break;
case AVAuthorizationStatusDenied:
NSLog(@"Denied");
break;
case AVAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
break;
case AVAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
default:
break;
}
获取相机或麦克风权限 [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {//相机权限
if (granted) {
NSLog(@"Authorized");
}else{
NSLog(@"Denied or Restricted");
}
}];
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {//麦克风权限
if (granted) {
NSLog(@"Authorized");
}else{
NSLog(@"Denied or Restricted");
}
}];
定位权限
导入头文件@import CoreLocation;
由于iOS8.0之后定位方法的改变,需要在info.plist中进行配置;
配置文件
检查是否有定位权限 BOOL isLocation = [CLLocationManager locationServicesEnabled];
if (!isLocation) {
NSLog(@"not turn on the location");
}
CLAuthorizationStatus CLstatus = [CLLocationManager authorizationStatus];
switch (CLstatus) {
case kCLAuthorizationStatusAuthorizedAlways:
NSLog(@"Always Authorized");
break;
case kCLAuthorizationStatusAuthorizedWhenInUse:
NSLog(@"AuthorizedWhenInUse");
break;
case kCLAuthorizationStatusDenied:
NSLog(@"Denied");
break;
case kCLAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
break;
case kCLAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
default:
break;
}
获取定位权限 CLLocationManager *manager = [[CLLocationManager alloc] init];
[manager requestAlwaysAuthorization];//一直获取定位信息
[manager requestWhenInUseAuthorization];//使用的时候获取定位信息
在代理方法中查看权限是否改变 - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
switch (status) {
case kCLAuthorizationStatusAuthorizedAlways:
NSLog(@"Always Authorized");
break;
case kCLAuthorizationStatusAuthorizedWhenInUse:
NSLog(@"AuthorizedWhenInUse");
break;
case kCLAuthorizationStatusDenied:
NSLog(@"Denied");
break;
case kCLAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
break;
case kCLAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
default:
break;
}
}
推送权限
检查是否有通讯权限 UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
switch (settings.types) {
case UIUserNotificationTypeNone:
NSLog(@"None");
break;
case UIUserNotificationTypeAlert:
NSLog(@"Alert Notification");
break;
case UIUserNotificationTypeBadge:
NSLog(@"Badge Notification");
break;
case UIUserNotificationTypeSound:
NSLog(@"sound Notification'");
break;
default:
break;
}
获取推送权限 UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
通讯录权限
iOS9.0之前
导入头文件 @import AddressBook;
检查是否有通讯录权限 ABAuthorizationStatus ABstatus = ABAddressBookGetAuthorizationStatus();
switch (ABstatus) {
case kABAuthorizationStatusAuthorized:
NSLog(@"Authorized");
break;
case kABAuthorizationStatusDenied:
NSLog(@"Denied'");
break;
case kABAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
break;
case kABAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
default:
break;
}
获取通讯录权限 ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"Authorized");
CFRelease(addressBook);
}else{
NSLog(@"Denied or Restricted");
}
});
iOS9.0及以后
导入头文件 @import Contacts;
检查是否有通讯录权限
CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
switch (status) {
case CNAuthorizationStatusAuthorized:
{
NSLog(@"Authorized:");
}
break;
case CNAuthorizationStatusDenied:{
NSLog(@"Denied");
}
break;
case CNAuthorizationStatusRestricted:{
NSLog(@"Restricted");
}
break;
case CNAuthorizationStatusNotDetermined:{
NSLog(@"NotDetermined");
}
break;
}
获取通讯录权限
CNContactStore *contactStore = [[CNContactStore alloc] init];
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Authorized");
}else{
NSLog(@"Denied or Restricted");
}
}];
日历、备忘录权限
导入头文件
检查是否有日历或者备忘录权限 typedef NS_ENUM(NSUInteger, EKEntityType) {
EKEntityTypeEvent,//日历
EKEntityTypeReminder //备忘
};
EKAuthorizationStatus EKstatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
switch (EKstatus) {
case EKAuthorizationStatusAuthorized:
NSLog(@"Authorized");
break;
case EKAuthorizationStatusDenied:
NSLog(@"Denied'");
break;
case EKAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
break;
case EKAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
default:
break;
}
获取日历或备忘录权限 EKEventStore *store = [[EKEventStore alloc]init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Authorized");
}else{
NSLog(@"Denied or Restricted");
}
}];
最后一点
素有获取权限的方法,多用于用户第一次操作应用,iOS 8.0之后,将这些设置都整合在一起,并且可以开启或关闭相应的权限。所有的权限都可以通过下面的方法打开: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
作者:Jack_lin
链接:https://www.jianshu.com/p/27e57922232b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
ios 简书 获取通讯录信息_ios 各种权限整理相关推荐
- ios 简书 获取通讯录信息_iOS 13获取用户通讯录需要注意的
获取通讯录还有一个最大的变化,就是iOS9以后 访问通讯录属性,要事先设置好,否则会奔溃, 下面是列表 // 姓名前缀 CNContactNamePrefixKey // 名 CNContactGiv ...
- ios 简书 获取通讯录信息_当心!你用的共享充电宝可能被植入木马盗取信息
出门在外,你的焦虑感是否会随着手机电量的降低而同步提高呢?乘车.支付.娱乐.联系都离不开手机,一旦没了电简直要丢掉半条命.这个时候遍布大街小巷的共享充电宝简直成了救命稻草.然而在你放心使用共享充电宝时 ...
- ios 简书 获取通讯录信息_iOS9以后获取手机通讯录
一.iOS 9 以前的通讯录框架 AddressBookUI框架:提供了联系人列表界面.联系人详情界面.添加联系人界面等,一般用于选择联系人. AddressBook 框架:纯 C 语言的 API,仅 ...
- ios 简书 获取通讯录信息_iOS-授权获取通讯录
- (void)getContact{ CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusF ...
- iOS 13.x获取通讯录信息时的注意事项
之前的项目兼容的版本在iOS9.0以上,所以在项目中使用了CNContacts框架获取用户的通讯录信息,大致的实现如下: /// 判断字符串是否可用 /// 辅助函数 /// @param str 原 ...
- ios通过app读取通讯录信息
iOS通过app读取通讯录信息,读取通讯录信息时需要加载AddressBookUI 和AddressBook两个包,并且引入头文件 #import <AddressBook/AddressBoo ...
- Android获取通讯录信息
Android获取通讯录信息 欢迎关注本人网站:rytter的私人博客网站 权限申请 自Android6.0以后,Android权限申请全部要求为动态申请(注:通讯录权限为危险权限),权限申请方法如下 ...
- 是否允许应用获取设备信息_iOS 14 隐私保护:管理和控制共享的位置信息
在使用 iPhone 时,可以选择是否允许应用使用您的位置信息.如果将设备升级到 iOS 14 之后,还可以仅允许应用访问大致的位置.不妨来了解下在 iOS 14 中如何控制共享的位置信息,以便保护您 ...
- [存档]获取通讯录信息并写到SD卡上
下面是代码,不过没有字母表的顺序排列: package com.example.getcontacts;import java.io.FileWriter; import java.io.IOExce ...
最新文章
- Android nDrawer
- zkcli远程连接_ZooKeeper 学习笔记(二)-API 操作和应用
- 我那个37岁的大神朋友,后续
- 消息中间件的 Style
- 初探下一代SIEM核心技术发展趋势
- 小米组织架构再调整:手机部成立参谋部 朱磊出任参谋长
- fps游戏 三角函数+模拟
- comsol分析时总位移代表什么_通过仿真分析球形盖的变形问题
- js uri解码_js对url进行编码和解码(三种方式区别)(转)
- 消息队列的使用场景(转载c)
- int是终结符还是非终结符_什么是自动化的终结?
- xlsx模块 前端_前端使用SheetJS的xlsx.js实现excel表格生成
- Ubuntu笔记本设置WiFi热点
- 自制H桥有刷电机驱动板
- 随心所遇,随遇而安。
- 1072:鸡尾酒疗法
- Unity 版本更新
- 阿里巴巴编码规范认证
- 低学历者已无法生存 程序员尤其明显
- power automate desktop字符串处理
热门文章
- [CF869E]The Untended Antiquity
- const、*、的大乱斗
- BNUOJ29065鸣人的查克拉
- were passed to component but could not be automatically inherited because component renders fragment
- 华米 Amazfit 跃我 GTR 4和GTS 4的区别
- 《惢客创业日记》2021.08.28-31(周六)一错即否、一善俱荣(三)
- 自动表单生成工具说明(后端、桌面、web、移动端)
- 如何理解 0.1+0.2
- 五款宝藏浏览器插件推荐,一定要看到最后
- 高品质后处理:十种图像模糊算法的总结与实现