即使设置设置为“iOS11”也可以访问照片库;决不;
即使我使用上述代码将“设置”中的照片访问权限设置为“从不”,我仍然可以显示图像选择器并显示照片。在显示之前,我将检查PHPhotoLibrary.authorizationStatus(),但我想知道这是预期行为吗?这是预期行为吗?-是 从文件中- 如果设备支持指定的源类型,则为true;如果指定的源类型不可用,则为false 它告诉您设备是否支持源类型,而应用程序是否具有访问它的权限即使设置设置为“iOS11”也可以访问照片库;决不;,ios,swift,xcode,ios11,Ios,Swift,Xcode,Ios11,即使我使用上述代码将“设置”中的照片访问权限设置为“从不”,我仍然可以显示图像选择器并显示照片。在显示之前,我将检查PHPhotoLibrary.authorizationStatus(),但我想知道这是预期行为吗?这是预期行为吗?-是 从文件中- 如果设备支持指定的源类型,则为true;如果指定的源类型不可用,则为false 它告诉您设备是否支持源类型,而应用程序是否具有访问它的权限 正如您在问题中已经提到的,PHPhotoLibrary.authorizationStatus()将是检查此问
正如您在问题中已经提到的,
PHPhotoLibrary.authorizationStatus()
将是检查此问题的正确方法。这是预期行为吗?-是
从文件中-
如果设备支持指定的源类型,则为true;如果指定的源类型不可用,则为false
它告诉您设备是否支持源类型,而应用程序是否具有访问它的权限
正如您在问题中已经提到的,
PHPhotoLibrary.authorizationStatus()
将是检查此问题的正确方法。UIImagePickerController和PHPhotoLibrary负责不同的区域
您应该同时检查:身份验证状态和源可用性
授权状态
有关应用程序访问用户照片的授权的信息
图书馆
是否资源类型可用
讨论
由于媒体源可能不存在或不可用,
设备可能并不总是支持所有源类型
例如,如果
尝试从用户的库中拾取图像,但该库已关闭
如果为空,则此方法返回false。类似地,如果相机已经启动
在使用中,此方法返回false
UIImagePickerController和PHPhotoLibrary负责不同区域 您应该同时检查:身份验证状态和源可用性 授权状态 有关应用程序访问用户照片的授权的信息 图书馆 是否资源类型可用 讨论 由于媒体源可能不存在或不可用, 设备可能并不总是支持所有源类型 例如,如果 尝试从用户的库中拾取图像,但该库已关闭 如果为空,则此方法返回false。类似地,如果相机已经启动 在使用中,此方法返回false 这种(新的)行为对我来说是合乎逻辑的,原因如下。使用
UIImagePickerController
时,您的应用程序实际上无法访问任何照片。当这种情况发生时,它只会看到用户选择的一个;如果用户在选择器中点击Cancel,应用程序将无法使用这些选项
PHPhotoLibrary
是一个单独的框架的一部分,在这个框架中,您可以使用用户的照片库执行许多操作,因此需要权限
因此,如果您只使用UIImagePickerController
,我建议不要混用照片内容
免责声明:没有听说过苹果公司的任何官方声明。看起来很相关,也许我们会得到回复UPD:,同样的想法
此外,如果你够邪恶,理论上你可以在运行时摆弄UIImagePickerController
查看层次结构,并检查用户在那里看到的任何东西。但这又是苹果需要处理的问题,我们应该友好:-)这种(新的)行为对我来说是合乎逻辑的,原因如下。使用UIImagePickerController
时,您的应用程序实际上无法访问任何照片。当这种情况发生时,它只会看到用户选择的一个;如果用户在选择器中点击Cancel,应用程序将无法使用这些选项
PHPhotoLibrary
是一个单独的框架的一部分,在这个框架中,您可以使用用户的照片库执行许多操作,因此需要权限
因此,如果您只使用UIImagePickerController
,我建议不要混用照片内容
免责声明:没有听说过苹果公司的任何官方声明。看起来很相关,也许我们会得到回复UPD:,同样的想法
此外,如果你够邪恶,理论上你可以在运行时摆弄
UIImagePickerController
查看层次结构,并检查用户在那里看到的任何东西。但这又是苹果要处理的问题,我们应该很好:-)好的,你可以从答案和评论中把这些拼凑起来,但要尝试讲述一个更完整的故事
在iOS 11中,
UIImagePickerController
作为独立于应用程序的进程运行。这意味着:
PHPhotoLibrary
及其授权状态反映了用户可以通过设置>Pri控制的照片访问的全局读/写权限
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
let imagePicker = UIImagePickerController()
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = true
self.present(imagePicker, animated: true, completion: { })
}