PHPhotoLibrary请求授权,而不是请求

bau*_*sic 3 ios phphotolibrary

为了进行测试,我试图重新创建系统“请求访问”弹出体验。

更新:
iOS 11下,删除App后,系统弹窗会再次显示。


(上一个问题)

应用程序第一次运行(也是唯一一次),系统弹出窗口显示,请求访问。之后,即使删除应用程序并重新启动设备也会再次触发该弹出窗口。

换句话说,设备“记住”用户请求并且无法重置它。

这是代码:

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

    switch (status) {
        case PHAuthorizationStatusAuthorized:
            NSLog(@"PHAuthorizationStatusAuthorized");
            break;

        case PHAuthorizationStatusDenied:
            NSLog(@"PHAuthorizationStatusDenied");
            break;
        case PHAuthorizationStatusNotDetermined:
            NSLog(@"PHAuthorizationStatusNotDetermined");
            break;
        case PHAuthorizationStatusRestricted:
            NSLog(@"PHAuthorizationStatusRestricted");
            break;
    }

}];
Run Code Online (Sandbox Code Playgroud)

当设置中关闭访问时,它会继续打印“PHAuthorizationStatusDenied”。但不显示任何弹出窗口。立即返回。

建议将“捆绑包显示名称”添加到 plist 中。尝试过没有效果,值为空、$(PRODUCT_NAME) 和不同的字符串。

清理项目,删除DrivedData(并每次从模拟器中删除应用程序)。没有运气。

更多信息:

一旦您在“设置”中关闭照片访问权限,Apple 示例代码“SamplePhotosApp”就会崩溃。

bau*_*sic 6

进一步阅读后,这似乎是设计使然。

来自苹果:

该方法总是立即返回。如果用户之前 授予或拒绝了照片库访问权限,则在调用时执行处理程序块;否则,它会显示警报并仅在用户响应警报后才执行该块。

如果用户被提示一次,则说“此方法总是立即返回”。之后就不会再显示该请求了。似乎没有办法(但一些自定义消息)再次使用系统消息。