【IOS】权限管理

本文探讨了在iOS应用中处理权限管理的问题,强调了在使用设备功能前判断权限的重要性。作者指出,通过集中请求所有权限可以减少对用户的打扰并简化代码。介绍了一个实现此策略的类,并提供了相关代码示例,旨在帮助开发者更优雅地处理权限请求。
摘要由CSDN通过智能技术生成

一个 APP 需要使用各种权限,比如相机,相册,位置等等,一般情况下我们习惯用到的时候,就去判断权限然后调用系统的设备来使用.这样也符合苹果的安全特点.

但是,让我们在编程过程中,会发现,如果事先不知道是否已经请求过权限了,那么就需要在使用之前先判断是否有权限,判断完成之后,等待用户赋予权限,然后继续执行.

拿通讯录举例来说,假设我们要打开系统的通讯录列表,要这么写

   CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
    
    //等待授权状态
    if (status == CNAuthorizationStatusNotDetermined) {
        
        CNContactStore *store = [[CNContactStore alloc] init];
        [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError*  _Nullable error) {
            granted?[self openContact]:[JDMessageView showMessage:@"无法读取通讯录"];
        }];
        
    }
    
    //应用程序未被授权访问联系人数据。*用户不能更改该应用程序的状态,可能由于活跃的限制,如家长控制
    else
    {
        if(status == CNAuthorizationStatusRestricted)
            
            [JDMessageView showMessage:@"无权访问"];
        
        /* !明确拒绝用户访问联系人数据的应用程序。*/
        else if (status == CNAuthorizationStatusDenied)
            
            [JDMessageView showMessage:@"无访问权限"];
        
        else if (status == CNAuthorizationStatusAuthorized)
            
           [self openContact];
        
    }

打开系统通讯录列表方法

- (void)openContact
{
    CNContactPickerViewController *pickerVC =[[CNCon
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值