我正在做一个副项目,它具有图像视图,用户可以在其中单击并从照片库中选择图像。我正在使用UIImagePickerController。
我的问题是我没有在 plist 或其他任何地方添加用户权限。 据我所知,如果您不添加权限,应用程序就会崩溃,另外,当应用程序首次打开时,对话框出现要求许可,但就我而言,它没有询问。 我想知道这怎么可能,或者苹果是否在新的Xcode或操作系统中进行了一些更改?
我正在使用版本 9.2 (9C40b) 并尝试在 iPhone 6(真实设备 iOS 11.2.6)上运行代码,在不同的模拟器中相同的结果,我删除了该应用程序并再次运行它,同样没有对话框。
如果苹果在iOS 11中更改了某些内容,我们应该添加还是不添加权限? 对于我们不想问的开发人员来说,最好的方法是什么,也不希望应用程序崩溃。
答案是肯定的,你必须提供描述
必须添加要使用的权限的使用说明(从iOS 11开始)。 苹果公司表示,
您的应用负责隐私敏感数据的所有使用,包括您应用中使用的所有第三方库对此数据的访问。如果您的应用尝试在没有使用情况说明的情况下访问隐私敏感数据,您的应用将退出。
如果 Info.plist 中未提供权限说明,您将在控制台日志中看到此错误
此应用已崩溃,因为它尝试在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSCameraUsageDescription 键和一个字符串值,向用户解释应用如何使用此数据。
如果您尝试提交没有发布说明的应用程序,Apple 将拒绝它并显示此消息
缺少 Info.plist 键 - 此应用尝试在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSSpeechRecognitionUsageDescription 键和一个字符串值,向用户解释应用如何使用此数据。
总结:
如果您之前未提供使用说明并上传应用程序,那么您的应用程序将在未请求许可的情况下崩溃
如果您没有提供使用说明并尝试最近提交,那么Apple将拒绝它。
参考: iOS 10 中的隐私设置