【原】xcode8因为权限程序崩溃的问题
xcode8如果代码中需要访问相册,相机,麦克风,蓝牙等都需要在info.plist设置一下权限才可以使应用正常运行起来。
一般权限错误都是这样的:
以相机为例:
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.
注意里面的关键字:NSPhotoLibraryUsageDescription。
这说明你需要找到你的info.plist,然后添加一个字段:NSPhotoLibraryUsageDescription,回车,key值你可以随意写,比如写“可以访问您的相机吗?”
重新运行,就可以了。
info.plist效果如下:
是不是发现为什么info.plist里为什么不是自己刚刚写的NSPhotoLibraryUsageDescription,而是Privacy - Photo Library Usage Description,哈哈,你把NSPhotoLibraryUsageDescription写上,然后回车,就可以看到自己写的NSPhotoLibraryUsageDescription变成了Privacy - Photo Library Usage Description。
所以,只要控制台报什么权限需要设置一下,你就直接复制放info.plist里就可以了。不用再去百度那个权限到底怎么拼写了。
这里备注一下几个常用的权限设置:
NSContactsUsageDescription -> 通讯录
NSMicrophoneUsageDescription -> 麦克风
NSPhotoLibraryUsageDescription -> 相册
NSCameraUsageDescription -> 相机
NSLocationAlwaysUsageDescription -> 地理位置
NSLocationWhenInUseUsageDescription -> 地理位置
Privacy - Bluetooth Peripheral Usage Description -> 蓝牙权限
Privacy - Speech Recognition Usage Description -> 语音转文字权限
Privacy - Calendars Usage Description -> 日历权限
Privacy - Contacts Usage Description -> 通讯录权限
最后再添加一个http请求需要允许的:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>