小的第一帖,具体需求是应用首次访问系统相册,会弹出授权界面,点击确认后,马上刷新数据源显示图片出来。
贴一下代码:
```objc
if(IS_GREATER_THAN_IOS8) //ios8以上
{
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status == PHAuthorizationStatusDenied)
{
NSLog(@"用户拒绝当前应用访问相册,我们需要提醒用户打开访问开关");
}else if (status == PHAuthorizationStatusRestricted)
{
NSLog(@"家长控制,不允许访问");
}else if (status == PHAuthorizationStatusNotDetermined)
{
//第一次访问相册,弹出授权界面。点击后定时器。这里加个定时器,判断有没有权限。思路是点击后,会执行定时器里的方法,如果点了确认,可以加载数据。点不允许,数据就加载不出来。
_time = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(TODO(写你自己的代码)) userInfo:nil repeats:YES];
}else if (status == PHAuthorizationStatusAuthorized){
// 获取所有资源的集合,并按资源的创建时间排序
TODO...(写你自己的代码)
}
}
```
ToDo
在扫描添加结果的时候停掉定时器。
if(_time)
{
[_time invalidate];
}
测试方法:
修改bundleId就可以生成新的应用,实现测试目的。
不懂可以私聊。
感觉之前的方法还是有问题,现在完善下。
-(void)GetALLphotosUsingPohotKit
{
if ([PHPhotoLibrary respondsToSelector:@selector(authorizationStatus)])
{
if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized)
{
[self readSystemPhoto];
}
else
{
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized)
{
[self readSystemPhoto];
}
}];
}
}
else
{
[self readSystemPhoto];
}
}
这样的话不管有没权限都可以访问,有权限直接走else访问,没有权限弹出授权窗口,点击同意后会回调,然后也可以马上访问,不需要定时器啥的。