iOS 应用程序 (MobileFirst) 被 Apple (NSPhotoLibraryUsageDescription) 拒绝

iOS app (MobileFirst) is rejected by Apple (NSPhotoLibraryUsageDescription)

我们的 iOS 混合移动应用程序(使用 MobileFirst 7.1 开发)最近被 Apple 拒绝:

This app attempts 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.

但是,该应用程序不使用照片库。因此,问题应该来自我们使用的库之一。除了 CordovaLib(MobileFirst 自带),我们还使用 email-composer (cordova-plugin-email-composer)、PushPlugin (https://github.com/phonegap-build/PushPlugin) and barcodescanner (https://github.com/phonegap/phonegap-plugin-barcodescanner)。 Barcodescanner 需要相机访问权限(密钥在提交前包含在 Info.plist 中),但不需要照片库访问权限。对于其他两个插件,他们的网页上没有关于 iOS 10 的信息,而且他们的用例与照片库相去甚远。

所以,问题是:

P.S。我知道我可以将 NSPhotoLibraryUsageDescription 键添加到 Info.plist,但这不是我想要的:应用程序不需要照片库,我不想添加这样的键。 由于堆栈溢出限制,无法 post link 到电子邮件编辑器。

这里有一篇博客 post 讨论了为什么会发生这种情况:http://cordobo.com/2256-fix-ioniccordova-app-ios-10-nscamerausagedescription-permission/。笔者恰好也用到了条码扫描器,还有Cordova。几乎是一样的情况。

这是由于 Apple 从 iOS10 开始的新政策而发生的变化。

与博客 [​​=24=] 不同,它建议删除并重新添加相机插件 - 因为在 MobileFirst 中您不能自己执行此操作,我建议手动进行更改。我所说的更改是指在 config.xml 文件中添加描述标签和您想要的文本,然后再次尝试提交申请。

如果还是不行,建议开个PMR给IBM的support帮忙

另请注意,可能还有其他插件需要描述文本处理。在最近的博客 post 中查看 Apache Cordova 的以下更改日志。搜索 iOS 个更改。

所以,答案是:MobileFirst 附带的嵌入式 Cordova 插件导致了问题。在没有 barcodescanner 但使用这些插件的情况下提交到 TestFlight 失败并出现同样的问题。删除嵌入式插件解决了问题并接受了提交。

https://mobilefirstplatform.ibmcloud.com/blog/2016/10/25/supporting-privacy-changes-in-ios-10/

P.S。例如,不清楚为什么只有照片库有问题而通讯录没有问题,但无论如何它都有效。

根据您的拒绝邮件或错误日志添加权限,更新您的Info.plist文件。

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>$(PRODUCT_NAME) photos and video use.</string>

解决隐私敏感数据应用拒绝

https://developer.apple.com/library/content/qa/qa1937/_index.html