当我升级到Xcode8后,启动我的相机项目,直接crash,输出的日志如下:
'2016-07-08 16:41:11.268943 project-name[362:56625] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2016-07-08 16:41:11.272276 project-name[362:56625] [MC] Reading from public effective user settings.
2016-07-08 16:41:11.356590 project-name[362:56700] [access] <private>
'
使用Xcode7启动,却没有问题,实际原因是上面的输出日志中最后一行就是
告诉你访问了隐私权限(aceess private),需要配置权限
相机权限:
Key:Privacy - Camera Usage Description
Value:允许此权限才能使用相机功能
因为我的项目还需要录制视频,并且想要保存图片,所以需要增加
相册:
Key:Privacy - Photo Library Usage Description
Value:允许此权限才能保存图片
麦克风:
Key:Privacy - Microphone Usage Description
Value:允许此权限才能录音
在info.plist里增加一项,key从上面的三项任一项拷贝,然后运行后会出现授权的警示框,同意后就没有问题了。
如图:
在还没有解决问题之前,即在未增加上面key之前,查看‘设置-隐私-相机’、‘设置-隐私-照片’、‘设置-隐私-麦克风’,
即使安装了应用,也无法在‘设置-隐私-xx’里看到有这个应用出现。由此表明,Xcode8即IOS10的权限相关改为
了在info.plist显示的设置,原来是在代码中调用到相关模块,系统自己为这个项目记录权限,现在需要项目本身
显示的要求权限,然后系统读取。当增加了key之后,运行应用即可以在‘设置-隐私-xx’里看到这个应用
相关链接
1.https://forums.developer.apple.com/message/152229#152229
2.Information Property List Key Reference
其它权限
位置权限:
Key:Privacy - Location Usage Description
Value:允许此权限才能启用:定位功能
Value:允许此权限才能在应用运行期间启用:定位功能
Key:Privacy - Location Always Usage Description
Value:允许此权限才能一直启用:定位功能
日历权限:
Key:Privacy - Calendars Usage Description
Value:允许此权限才能访问:日历
提醒事项:
Key:Privacy - Reminders Usage Description
Value:允许此权限才能访问:提醒事项
运动与健康:
Key:Privacy - Motion Usage Description
Value:允许此权限才能访问:运动与健康
Key:Privacy - Health Update Usage Description
Value:允许此权限才能访问:健康更新
Key:Privacy - Health Share Usage Description
Value:允许此权限才能访问:健康数据分享
蓝牙权限:
Key:Privacy - Bluetooth Peripheral Usage Description
Value:允许此权限才能访问:蓝牙
媒体资料库:
Key:Privacy - Media Library Usage Description
Value:允许此权限才能访问:媒体资料库
如下图