我需要检测应用程序在iOS 8上使用PhotoKit访问照片的权限的更改。我可以使用PHPhotoLibrary.authorizationStatus()
获取状态,但我需要知道此状态何时更改,所以我可以更新UI(要求他们更改权限)。
如果用户启动了应用,我会检查authorizationStatus
中的viewDidLoad
,然后在状态为.Denied
或.Restricted
时显示该消息。但是,如果用户然后转到“设置”并授予访问权限,则当他们返回应用程序时,它仍会显示该消息。我需要处理这些状态更改 - 如果它更改为.Authorized
我需要删除该消息并重新加载我的集合视图。
我无法找到任何可以订阅的通知。如何实现这一目标?
答案 0 :(得分:3)
我发现当我在真实设备上运行应用程序而不是在模拟器中进行调试时,当用户更改照片访问权限时,应用程序似乎被终止,因为当他们返回应用程序时,它不会恢复到以前。因为我在viewDidLoad
为第一个视图控制器请求授权,所以它正确处理拒绝/限制状态。
请注意,如果您在测试时在模拟器中调试应用程序,它将不会终止它。但是如果你停止运行应用程序然后尝试它,它将终止它。
答案 1 :(得分:2)
只要您尝试使用PhotoKit,就可以检查空PHFetchResult
个对象。
这是因为,如果用户拒绝了您的应用照片库访问权限,尚未响应权限提示,或因限制而无法授予访问权限,则任何获取照片库内容的尝试都将返回空PHFetchResult
个对象
Apple建议您使用registerChangeObserver:
,因为
...用户授予对您应用的照片库的访问权限后,照片会针对您事先检索到的任何空提取结果发送更改消息,通知您这些提取的库内容现在可用。
您可以在PhotoKit documentation找到更多信息。