Xcode8 中的 NSPhotoLibraryUsageDescription

NSPhotoLibraryUsageDescription in Xcode8

更新:
我尝试将字符串值添加到 "NSPhotoLibraryUsageDescription" 键。

它 works.My 构建版本现在可以在我的 TestFlight 上使用。

ps: 构建版本表示构建版本

但我想知道为什么 Apple Store 只让我为 "NSPhotoLibraryUsageDescription" 键添加字符串值而不是 "Camera Usage Description""Location When In Use Usage Description"? 以及如何本地化info.plist。


:
我已经将许多构建版本上传到 iTunes Connect.But TestFlight 显示了这些构建版本的 none。
然后我在Whosebug上搜索这个问题。我知道这是由使用说明引起的。我在 Info.plist 中添加了 NSPhotoLibraryUsageDescription。 但是,Apple Store 团队通过电子邮件告诉我:

Dear developer,

We have discovered one or more issues with your recent delivery for "Family Health Tracker". To process your delivery, the following issues must be corrected:

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.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team

他们仍然告诉我添加 NSPhotoLibraryUsageDescription

确保 "NSPhotoLibraryUsageDescription" 在将应用程序上传到 iTunesConnect 之前分配了值。

本地化Info.plist:

  • 点击你的Info.plist
  • 显示您的 Utilities,然后单击 File inspector
  • 这是一个按钮 Localize,点击它。

本地化 info.plist 文件可能非常无用,尤其是当您在应用程序中使用多种语言时。 本地化 NSPhotoLibraryUsageDescriptionNSLocationWhenInUseUsageDescriptionNSCameraUsageDescription 键的最简单方法是在 InfoPlist.strings 文件中对其进行描述。

  • 创建名称为 InfoPlist 的新 *.strings 文件;
  • 在文件检查器中按 Localize... 按钮并选择默认语言;
  • 在新 InfoPlist.strings 文件中添加新记录。例如 英语:

NSLocationWhenInUseUsageDescription = "Location usage description";

NSPhotoLibraryUsageDescription = "Photos usage description";

NSCameraUsageDescription = "Camera usage description";

更多信息Apple docs

我有两个应用程序有同样的问题,解决方案显示了itunnes通过邮件连接: info.plist 查看您的文件并尝试添加以下字段:

  Privacy - Photo Library Usage Description

  Bluetooth Sharing - NSBluetoothPeripheralUsageDescription

每个都附有解释其使用原因的文字。 您可以在此处查看其 info.plist 中现在需要 iOS 10 的权限: https://blog.xamarin.com/new-ios-10-privacy-permission-settings/

这对我有用。

只需将这些行添加到您的 info.plist 文件

<key>NSPhotoLibraryUsageDescription</key>
<string>Photo Library Access Warning</string> //For NSPhotoLibraryUsageDescription issue.

试试这个对我们有用,

<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>

详情请参考

希望这对一些人有所帮助。

missing keys 与某些 API 相关,需要在 .plist 键中定义一些使用说明。在添加任何密钥之前,如果您知道您的应用程序没有任何特定用途,我建议您看一下来自 Apple 的官方 guide 以识别错误 API 类。例如,我只是在包含 UIImagePickerController 的行上添加了注释。这足以让 Apple 拒绝二进制文件;虽然我没有访问用户照片库。验证此步骤后,您可以继续使用此处提到的其他解决方案。