美文网首页视频类
Photos框架的使用总结(三)授权状态的总结

Photos框架的使用总结(三)授权状态的总结

作者: Rui哥 | 来源:发表于2018-02-28 13:25 被阅读25次

    一 请求用户相册授权状态的总结

    • 我是这么处理的
    typedef enum {
        PHAuthorizationType_Restricted,//被限制,不能访问相册
        PHAuthorizationType_Denied,    // 用户拒绝
        PHAuthorizationType_DeniedNeedShowTip,//用户拒绝需要提示打开思路
        PHAuthorizationType_Authorized// 用户允许访问
    }PHAuthorizationType;
    
    
    
    /** 获取用户 相册访问的权限, */
    +(void)fetchPHAuthorizationTypeCallBack:(void(^)(PHAuthorizationType authorizationType))authorizationTypeCallBack;{
        // 1. 获取当前的授权状态
        PHAuthorizationStatus  oldStatus = [PHPhotoLibrary authorizationStatus];
        
        /** 请求\ 查询访问权限
         1.如果用户之前还没做出选择(第一次使用),会自动弹框.弹框后用户做出选择,才会调用block
         2.如果用户之前做过选择了会直接回调block,并且不会弹框.
         3.也就是说 block 只有在用户 做过选择后才会调用,也就是说不会出现 用户不确定的情况(PHAuthorizationStatusNotDetermined)
         
         */
        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
            // block 子线程调用
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                if (status == PHAuthorizationStatusRestricted) {
                    // 用户被限制,不能使用
                    authorizationTypeCallBack(PHAuthorizationType_Restricted);
                }
                else if (status == PHAuthorizationStatusDenied) {
                    
                    if(oldStatus == PHAuthorizationStatusNotDetermined){
                        //弹框后用户选择 拒绝
                        authorizationTypeCallBack(PHAuthorizationType_Denied);
                        
                    }else{
                        // 需要弹框告诉用户打开
                        authorizationTypeCallBack(PHAuthorizationType_DeniedNeedShowTip);
                    }
                }
                else if (status == PHAuthorizationStatusAuthorized) {//用户未决定
                    // 用户可以使用
                    authorizationTypeCallBack(PHAuthorizationType_Authorized);
                }
                
            });
            NSLog(@"status : %ld",status);
            
        }];
        
    }
    
    

    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
    // block 子线程调用
    }]; 这个方法的block 只有在用户选择过同意\不同意后才会回调block, 当是当block 回调的状态是PHAuthorizationStatusDenied时需要明确这个"拒绝结果"是用户现在本地弹框选择的直接结果,还是上次用户打开应用时就一已经选择的结果,如果是上次的选择的结果需要再次提示用户开启授权的思路.

    相关文章

      网友评论

        本文标题:Photos框架的使用总结(三)授权状态的总结

        本文链接:https://www.haomeiwen.com/subject/otsabxtx.html