美文网首页
APP首次打开系统相册时(获取当前应用对照片的访问授权状态)

APP首次打开系统相册时(获取当前应用对照片的访问授权状态)

作者: InitWithYou | 来源:发表于2016-10-11 14:22 被阅读2135次
    问题:

    有时,我们需要拿到系统的相册,然后在一个VC中获取到所有相片[self getALLPhotos];,然而,当第一次访问系统相册时,是会系统弹出用户授权窗口的,问题在于用户还没点击同意授权打开相册时就已经先走了[self getALLPhotos];这个获取所有相片的方法了。最后导致首次用户去授权时,[self getALLPhotos];获取不到所有的相片。


    解决方法:

    我们需要在VC中获取当前应用对照片的访问授权状态,如果是非授权状态我们就去创建一个计时器,让其每0.2S去走一次(void)observeAuthrizationStatusChange:(NSTimer *)timer这个方法,
    在上面那个方法内去判断当已授权时,再次去[self getALLPhotos]。这样就达到了实时去检测授权状态,一旦用户点击同意打开相册,则再次请求一次所有照片。具体实现代码如下:

    - (void)viewDidLoad {
        [super viewDidLoad];
        [self setNavigationBariew];
        [self creatMyView];
        [self getALLPhotos];
        // 获取当前应用对照片的访问授权状态
        if ([PHPhotoLibrary authorizationStatus] != PHAuthorizationStatusAuthorized) {
            self.timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(observeAuthrizationStatusChange:) userInfo:nil repeats:YES];
        }
    
    }
    - (void)observeAuthrizationStatusChange:(NSTimer *)timer
    {
        /** 当用户已授权 */
        if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized) {
            [timer invalidate];
            self.timer = nil;
            [self getALLPhotos];
        }
    }
    

    至于如何去获取所有照片[self getALLPhotos] ,可看本人上篇文章

    ps:如阅读后对您有一丢丢帮助,(__) ....麻烦随手点个赞,那将是对我最大的激励。O(∩_∩)O谢谢。。。。

    相关文章

      网友评论

          本文标题:APP首次打开系统相册时(获取当前应用对照片的访问授权状态)

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