iOS关于应用使用权限的注意点

2018-12-14  本文已影响107人  流年划过颜夕

iOS关于应用使用权限的一些注意点:
1.项目中涉及图片,定位,录音等权限使用问题,首先一定要在info.plist中加以说明,如:
NSCameraUsageDescription
您可以拍摄照片或视频并分享给其他成员
NSLocationWhenInUseUsageDescription
您的位置信息将能够被共享给其他成员
NSMicrophoneUsageDescription
您可以录制音频并分享给其他成员
NSPhotoLibraryAddUsageDescription
您可以将图片保存到您的相册
NSPhotoLibraryUsageDescription
您可以将相册中的照片或视频分享给其他成员

(1)不加对应的字段会引起调用权限失败,iOS10后Apple官方会针对某些权限直接抛异常.
(2)要注意虽然加了对应的字段,但是描述不准确会有审核不通过的风险.

2.要监听项目中涉及图片,定位,录音等权限的开关,有可能用户用的时候是开启的,但是用户可能因为各种原因就把某些权限关闭了,这也会引起奔溃或者报错,要做好适配。

3.如果检测到图片,定位,录音等权限未打开,最好用弹窗教程引导用户去设置中开启,但是弹窗展示UI时也可能会遇见问题甚至奔溃。如以下信息反馈信息:
"This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes"
因为要注意线程问题,一定要回到主线程更新数据和UI。

4.权限使用时,最好用真机调试,如果用模拟器调试注意点
(1)Xcode运行模拟器定位要通过模拟器->Debug->Location->Custom Location设定好坐标
(2)现在模拟器使用相机Apple官方会直接抛异常,只为了告诉开发者相机不可用 (Source type 1 not available)
"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Source type 1 not available'"
可提前用以下方式判断真机还是模拟器做好适配

if TARGET_IPHONE_SIMULATOR //模拟器

elif TARGET_OS_IPHONE //真机

endif

以上

上一篇下一篇

猜你喜欢

热点阅读