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

2016-10-11  本文已影响2135人  InitWithYou
问题:

有时,我们需要拿到系统的相册,然后在一个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谢谢。。。。

上一篇下一篇

猜你喜欢

热点阅读