iOS15.2 注册相册变化通知时未给相册权限导致崩溃 卡死

iOS15.2 在app初始化时调用该方法 未给相册权限 会导致app卡死 不能启动 会触发iOS 启动看门狗机制 崩溃

在app已经启动后 调用该方法 未给相册权限 会导致页面卡死 不能使用

[PHPhotoLibrary.sharedPhotoLibrary registerChangeObserver:self]

iOS15.2 以前使用该通知是不需要相册权限的 15.2之后 苹果添加了应用隐私报告 添加了该方法的相册权限前提

解决方案: 先请求相册权限 在获取到权限后 同时将注册该通知放到异步注册

if (@available(iOS 14, *)) {
    [PHPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus status) {
        if (status == PHAuthorizationStatusAuthorized)
        {
            dispatch_async(dispatch_get_global_queue(0, 0), ^{
                [PHPhotoLibrary.sharedPhotoLibrary registerChangeObserver:self];
            });
        }
    }];
}else {
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status){
        if (status == PHAuthorizationStatusAuthorized)
        {
            dispatch_async(dispatch_get_global_queue(0, 0), ^{
                [PHPhotoLibrary.sharedPhotoLibrary registerChangeObserver:self];
            });
        }
    }];
}

- (void)photoLibraryDidChange:(PHChange *)changeInstance
{
    /// 回到主线程处理 
    __weak typeof (self) weakSelf = self;
    dispatch_async(dispatch_get_main_queue(), ^{
    });
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容