iOS 手机权限设置

手机权限设置

在app中需要访问手机相册,相机,定位,通讯录等隐私数据的时候,如果不做权限设置app会crash。崩溃日志如下:

This app has crashed because it attempted to access privacy-sensitive data without a usage description.The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

这是因为苹果加强了用户隐私的安全保护,在获取这些隐私数据的时候需要用户的授权。要解决这个问题,需要在info.plist中添加NSContactUsageDescription的key,然后填写对应的value。下面列举了对应的key(Source Code模式下):

NSCameraUsageDescription
用于身份证验证服务                             
NSContactsUsageDescription                                                                       
用于填写紧急联系人信息    
NSLocationAlwaysAndWhenInUseUsageDescription     
定位用于帮助判断申请贷款资格的审核,申请贷款时需要提交用户的位置信息
NSLocationAlwaysUsageDescription         
定位用于帮助判断申请贷款资格的审核,申请贷款时需要提交用户的位置信息
NSLocationWhenInUseUsageDescription                             
定位用于帮助判断申请贷款资格的审核,申请贷款时需要提交用户的位置信息 
NSPhotoLibraryAddUsageDescription
同意“App”访问您的相机,用于保存二维码图片    
NSPhotoLibraryUsageDescription
同意“APP”访问您的相机,用于保存二维码图片
NSMicrophoneUsageDescription
同意“APP”访问您的麦克风,用于语音通讯
NSCalendarsUsageDescription
同意“APP”访问您的日历,用于查看一段时间内的账户流水信
NSRemindersUsageDescription 
同意“APP”访问您的提醒事项,用于提醒您近期要处理的事情
NSMotionUsageDescription
同意“APP”访问您的运动与健身,用于对您每日步数的统计
NSHealthUpdateUsageDescription
同意“APP”访问您的健康,用于对您每日步数的统计
NSHealthShareUsageDescription
同意“APP”访问您的健康,用于对您每日步数的统计
NSBluetoothPeripheralUsageDescription
同意“APP”访问您的蓝牙,用于对自行车开锁
NSAppleMusicUsageDescription
同意“APP”访问媒体资料库,用于XXX

具体的描述要根据应用的功能进行填写!具体的描述要根据应用的功能进行填写!具体的描述要根据应用的功能进行填写!重要的事情说三遍。

如果用户在使用过程中没有开启响应的权限,可以提醒用户去开启,具体代码如下:

UIAlertController *alert = [UIAlertController
                                    alertControllerWithTitle:@"提示"
                                    message:@"请在iPhone的\"设置-隐私-"
                                    @"定位服务\"选项中,"
                                    @"允许本程序访问您的位置"
                                    preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction
                          actionWithTitle:@"确定"
                          style:UIAlertActionStyleDestructive
                          handler:^(UIAlertAction *_Nonnull action) {
                              
                              if ([[UIApplication sharedApplication]
                                   canOpenURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]) {
                                  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
                              } else {
                                  QDLog(@"error");
                              }
                          }]];
        [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

        }]];
        [self presentViewController:alert animated:YES completion:nil];

关于ATS

在iOS 9中,默认http的网络请求是禁止的,如果在项目测试阶段需要访问http请求可以在'info.plist'文件中添加'NSAppTransportSecurity'字典,将'NSAllowsArbitraryLoads'设置为'YES'来禁用ATS。
具体设置如下:

//在项目的info.plist中
NSAppTransportSecurity

NSAllowsArbitraryLoads


为了能够用户数据的隐私和通过苹果应用审核最好是采用https进行数据的访问。

你可能感兴趣的:(iOS 手机权限设置)