![](/img/trans.png)
[英]What is the crash of “The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription”?
[英]What's difference between NSPhotoLibraryAddUsageDescription and NSPhotoLibraryUsageDescription?
我的应用程序今天在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,或者我必须保留它们?
只需点击上面的图像即可获得ZOOM并阅读。
有关的更多信息:
NSPhotoLibraryAddUsageDescription :如果要将照片/图像保存到照片库。 适用于iOS11 and +
NSPhotoLibraryUsageDescription :如果要访问照片库。 适用于iOS10 and +
正如我在文档中看到的,两者之间的区别是:
NSPhotoLibraryAddUsageDescription:您只能写入,不能读取。
NSPhotoLibraryUsageDescription:您可以读取和写入照片。
来自NSPhotoLibraryUsageDescription的Apple文档:
“虽然这些密钥管理对用户照片库的读写访问权限, 但如果您的应用只需要向资源库添加资产而不需要读取任何资产 , 则最好使用NSPhotoLibraryAddUsageDescription。 ”
我自己回答最后一个问题:
您需要声明NSPhotoLibraryUsageDescription
和NSPhotoLibraryAddUsageDescription
才能在iOS NSPhotoLibraryUsageDescription
和NSPhotoLibraryAddUsageDescription
上使其工作。
从技术上讲,它是不同的。 我曾经没有声明NSPhotoLibraryUsageDescription
,它在iOS 9和11上工作正常,但在iOS 10.3上失败并崩溃。
这是一个非常糟糕的版本控制Apple,而更高版本不符合并支持旧版本权限。
你需要两个。
因为一旦我尝试使用UIActivityViewController
将图像保存到库中,我的iphone版本是11.3,我只使用NSPhotoLibraryUsageDescription
并且因为我需要NSPhotoLibraryAddUsageDescription
崩溃。
但ios 9.3没有崩溃。
基于请求权限的API以及iOS版本的写访问存在差异,因此您需要两者。
我的应用已经有NSPhotoLibraryUsageDescription,以便使用PHPhotoLibrary来保存图像。
在iOS 11上,它仍然有效,但如果我的应用程序尚未获得权限,则通过UIDocumentInteractionController中的“保存图像”共享图像会导致崩溃,并显示有关NSPhotoLibraryAddUsageDescription的警告。 如果已经通过PHPhotoLibrary授予了权限,我似乎不需要NSPhotoLibraryAddUsageDescription来“保存图像”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.