Xcode8、 iOS10 适配问题
-
调用相机、相册、麦克风、位置等隐私问题崩溃解决办法
你的项目中访问了隐私数据,比如:相机,相册,联系人等,在Xcode8中打开编译的话,统统会crash,控制台会输出下面这样的日志:

这是因为iOS对用户的安全和隐私的增强,在申请很多私有权限的时候都需要添加描述,但是,在使用Xcode 8之前的Xcode还是使用系统的权限通知框.
要想解决这个问题,只需要在info.plist添加NSContactsUsageDescription的key, value自己随意填写就可以,这里列举出对应的key(Source Code模式下):
<!-- 相册 --><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>
如果不起作用,可以请求后台权限,类似于这样:
<key>UIBackgroundModes</key><array><!-- 在这里写上你在后台模式下要使用权限对应的key --><string>location</string>...</array>
或者在Xcode里选中当前的target,选择Capabilities,找到Background Modes,打开它,在里面选择对应权限
浙公网安备 33010602011771号