我的应用程序今天在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,或者我必须同时保留它们?
答案 0 :(得分:24)
Simple get from Apple Official Document
只需点击上面的图片即可获得ZOOM并阅读。
有关以下内容的更多信息:
NSPhotoLibraryAddUsageDescription:如果您想将保存照片/图片添加到照片库。对于iOS11 and +
NSPhotoLibraryUsageDescription:如果您想访问您的照片库。对于iOS10 and +
答案 1 :(得分:8)
正如我在文件中看到的,两者之间的区别是:
NSPhotoLibraryAddUsageDescription:您有权只能写,不能阅读。
NSPhotoLibraryUsageDescription:您可以读取和写入照片。
来自NSPhotoLibraryUsageDescription的Apple文档:
"虽然此键控制对用户照片库的读写访问权限,但如果您的应用只需要向库中添加资源而不需要读取任何资源,则最好使用NSPhotoLibraryAddUsageDescription。 /强>"
答案 2 :(得分:4)
要我自己回答最后一个问题:
您需要同时声明NSPhotoLibraryUsageDescription
和NSPhotoLibraryAddUsageDescription
才能在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。