您的位置:首页 > 移动开发 > IOS开发

iOS 10 开发之权限Crash 相机相册等权限的使用、检测并引导用户开启权限

2016-11-10 16:52 621 查看
升级 iOS 10 之后坑还是挺多的,以前正常使用的权限, 现在会出现crash问题

调用相机和相册的时候如果没有提示用户开启权限, 就会出现闪退

下面是调用相册时候, 没有提醒开启权限, 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.

这个程序已经崩溃,因为它试图访问隐私数据没有使用说明。应用程序的信息。plist必须包含一个NSPhotoLibraryUsageDescription关键字符串值向用户解释应用程序如何使用这些数据。

大意就是说, 程序崩溃的是因为访问隐私数据没有进行说明, 你需要在 info.plist 文件添加一个
NSPhotoLibraryUsageDescription
的 key,然后添加一个描述。

解决方案

1.在项目中找到
info.plist
文件

2.添加以下键值对


<key>NSPhotoLibraryUsageDescription</key>
<string>此 App 需要您的同意才能读取媒体资料</string>


注意,key 是绝对不能写错的

而 value 也就是<string></string>你可以随意写

目测所有需要的权限描述都会在 iOS 10 beta里面crash,不用怕,控制台会有输出的,自行添加就 OK,下面是几个常用的key/value

<!-- 相册 -->
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>
<!-- 相机 -->
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能访问相机</string>
<!-- 麦克风 -->
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的同意,才能访问麦克风</string>
<!-- 位置 -->
<key>NSLocationUsageDescription</key>
<string>App需要您的同意,才能访问位置</string>
<!-- 在使用期间访问位置 -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>App需要您的同意,才能在使用期间访问位置</string>
<!-- 始终访问位置 -->
<key>NSLocationAlwaysUsageDescription</key>
<string>App需要您的同意,才能始终访问位置</string>
<!-- 日历 -->
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能访问日历</string>
<!-- 提醒事项 -->
<key>NSRemindersUsageDescription</key>
<string>App需要您的同意,才能访问提醒事项</string>
<!-- 运动与健身 -->
<key>NSMotionUsageDescription</key> <string>App需要您的同意,才能访问运动与健身</string>
<!-- 健康更新 -->
<key>NSHealthUpdateUsageDescription</key>
<string>App需要您的同意,才能访问健康更新 </string>
<!-- 健康分享 -->
<key>NSHealthShareUsageDescription</key>
<string>App需要您的同意,才能访问健康分享</string>
<!-- 蓝牙 -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的同意,才能访问蓝牙</string>
<!-- 媒体资料库 -->
<key>NSAppleMusicUsageDescription</key>  <string>App需要您的同意,才能访问媒体资料库</string>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息