检测添加照片权限

13

iOS 11 中,我们现在有了“仅添加照片”权限设置。 ios 11 photos settings

但是,我们如何确定设置了哪个照片库访问级别? [PHPhotoLibrary authorizationStatus] 只适用于“读写”权限检查。如果应用只要求“仅添加照片”权限,则它保持为 PHAuthorizationStatusNotDetermined。如果用户将其从“读写”更改为“仅添加照片”,则它会给出 PHAuthorizationStatusDenied

那么,我如何知道我的应用程序是否拥有执行“导出到相机胶卷”的权限,该权限不需要读取权限?


这里也有同样的问题。找到什么解决方法了吗? - Daniel Tranca
据我所知,在iOS11中,没有办法知道我们是否可以将照片库写入而不实际尝试并检查错误(例如使用UIImageWriteToSavedPhotosAlbum回调,如mikebld建议的那样)。这很不幸,因为如果设备拒绝访问权限,则我总是禁用“导出到相机胶卷”按钮。现在我必须始终显示它,并在导出尝试失败时返回一些错误警报。 - Edgar Jan
2个回答

12
自从iOS 11以来,要想获得仅写入权限,您需要在info.plist中添加NSPhotoLibraryAddUsageDescription。但是,如果您想检查用户是否允许您这样做,则会出现问题。由于该方法调用了读写弹出窗口(而您也需要在info.plist中添加NSPhotoLibraryUsageDescription),因此无法通过[PHPhotoLibrary authorizationStatus]方法完成。
如果您想检查用户是否授予您的应用程序写入访问权限,则必须调用UIImageWriteToSavedPhotosAlbum(我猜您已经调用过这个方法以将数据添加到图库),它会给您一个回调,告诉您保存是否成功,但更重要的是,它会显示您的NSPhotoLibraryAddUsageDescription文本。
现在,为了确保您在两者上都有访问权限,您应该在info.plist中添加NSPhotoLibraryAddUsageDescriptionNSPhotoLibraryUsageDescription,并使用PHPhotoLibrary进行常规检查,如果失败,则只能在将数据保存到库中时使用UIImageWriteToSavedPhotosAlbum进行检查。
我想说,您可以仅使用UIImageWriteToSavedPhotosAlbum进行检查,但您需要实际将图像保存到用户图库中才能进行检查,这很麻烦,是不可取的。

3
自iOS 14起,您可以检查用户是否仅允许添加照片的权限:
PHPhotoLibrary.authorizationStatus(for: .addOnly)

不幸的是,这意味着在 iOS 14 以下版本中,您无法知道用户是否选择了仅添加照片或其他选项。唯一的另一种检查方式是实际使用 UIImageWriteToSavedPhotosAlbum,就像 mikebld 在他的回答中所说的那样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接