NSPhotoLibraryAddUsageDescription和NSPhotoLibraryUsageDescription有什么区别?

时间:2017-09-21 12:38:25

标签: ios permissions ios11

我的应用程序今天在Xcode9上进行更新时崩溃,在iOS11上进行测试。 添加NSPhotoLibraryAddUsageDescription后,即使我已经拥有NSPhotoLibraryUsageDescription

也可以

我读过它们,一个支持iOS6,一个iOS11,但Apple没有提到它们之间有什么区别。 https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW73

如果我保留新的(NSPhotoLibraryAddUsageDescription),它是否适用于iOS 8,或者我必须同时保留它们?

5 个答案:

答案 0 :(得分:24)

Simple get from Apple Official Document

只需点击上面的图片即可获得ZOOM并阅读。

有关以下内容的更多信息:

答案 1 :(得分:8)

正如我在文件中看到的,两者之间的区别是:

  • NSPhotoLibraryAddUsageDescription:您有权只能写,不能阅读。

  • NSPhotoLibraryUsageDescription:您可以读取和写入照片。

来自NSPhotoLibraryUsageDescription的Apple文档:

"虽然此键控制对用户照片库的读写访问权限,但如果您的应用只需要向库中添加资源而不需要读取任何资源,则最好使用NSPhotoLibraryAddUsageDescription。 /强>"

答案 2 :(得分:4)

要我自己回答最后一个问题:

您需要同时声明NSPhotoLibraryUsageDescriptionNSPhotoLibraryAddUsageDescription才能在iOS 9、10.3和11上都可以使用它。

从技术上来说是不同的。 我以前没有声明过NSPhotoLibraryUsageDescription,它在iOS 9和11上都能正常工作,但在iOS 10.3上失败并崩溃了。

这是苹果公司控制的非常糟糕的版本,而更高版本不符合并支持旧版本许可。

答案 3 :(得分:2)

你需要两者。
因为一旦我尝试使用UIActivityViewController将图像保存到库中,我的iphone版本是11.3,我只使用NSPhotoLibraryUsageDescription而且因为我需要NSPhotoLibraryAddUsageDescription而崩溃。
但是ios 9.3没有崩溃。

答案 4 :(得分:1)

基于请求权限的API和iOS版本的写访问有所不同,因此您同时需要两者。

我的应用程序已经具有NSPhotoLibraryUsageDescription以便使用PHPhotoLibrary保存图像。

在iOS 11上,它仍然可以工作,但是如果我的应用尚未获得许可,则通过UIDocumentInteractionController中的“保存图像”共享图像会导致崩溃,并显示关于NSPhotoLibraryAddUsageDescription的警告。如果已经通过PHPhotoLibrary授予了权限,则“保存图像”似乎不需要NSPhotoLibraryAddUsageDescription。