什么是"应用程序的Info.plist必须包含NSPhotoLibraryAddUsageDescription"的崩溃?

Ahm*_*d F 28 permissions ios ios11

我遇到以下错误(iOS 11):

此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSPhotoLibraryAddUsageDescription带有字符串值的键,向用户解释应用程序如何使用此数据.

请注意,虽然应用程序info.plist确实包含NSPhotoLibraryUsageDescription它仍然崩溃,为什么?

Ahm*_*d F 65

请注意,虽然应用程序info.plist确实包含 NSPhotoLibraryUsageDescription它仍然崩溃,为什么?

我认为在比较时存在误解,NSPhotoLibraryUsageDescription并且NSPhotoLibraryAddUsageDescription如" 信息财产清单重点参考"中所述:

NSPhotoLibraryUsageDescription:

使用此键可以描述应用访问用户照片库的原因.当系统提示用户允许访问时,此字符串将显示为警报的一部分.

这与让应用程序能够访问(获取)设备照片库有关.

NSPhotoLibraryAddUsageDescription:

通过此键,您可以描述应用程序寻求 对用户照片库的只写访问权限的原因.当系统提示用户允许访问时,此字符串将显示为警报的一部分.

这与让应用程序能够将照片写入(添加)到设备照片库有关.


显然,要解决此崩溃,您必须将其添加NSPhotoLibraryAddUsageDescription到应用程序的plist文件中:

<key>NSPhotoLibraryAddUsageDescription</key>
<string>Our application needs permission to write photos...</string>
Run Code Online (Sandbox Code Playgroud)

作为属性列表视图:

在此输入图像描述

  • Apple的'NSPhotoLibraryUsageDescription`文档明确指出它是读写访问权限:"尽管这些密钥管理用户照片库的**读写访问权限**,但如果您的应用只需要添加资产,最好使用NSPhotoLibraryAddUsageDescription到库中并且不需要读取任何资产."我不知道这只是文档中的错误,还是Apple故意将`NSPhotoLibraryUsageDescription`的行为改为只读. (4认同)