ALAssetsLabrary的简单应用

以前不喜欢写一些总结性的文章跟博客,今天在做相册获取时出现了一点点问题,就是在app第一次装上去的时候并没有出现“允许访问”相册的对话框,因此我觉得这些文章或博客还是非常有必要的。
1、访问相册中的图片
通过ALAssetsLabrary来访问所有的保存在本机上的图片、录音、视频文件,这里我们需要的只是图片,只是可以这么写:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    // 通过library来访问所有的保存在本机上的图片、音频、视频
    [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        // 通过group访问到所有的图片asset
        [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
           // 得到所有的asset文件,然后通过asset文件得到image,这里有个问题,需要得到的是高清的image
            UIImage *image = [UIImage imageNamed:[[result defaultRepresentation] fullScreenImage]];
            
        }];
    } failureBlock:^(NSError *error) {
        
    }];

不过以上步骤都是异步过程,因此我们需要使用block来实现在异步过程完成后再实现跳转或赋值,这是重点。

2、访问时,是否会出现“允许访问”对话框
在app访问本机相册时,一般都是会出现“允许访问”对话框的,如果没有则是此app在此前遗留有缓存文件,已经允许或拒绝过了,系统记住了此前用户的操作,如果需要再次提示可删除缓存或reset模拟器。
监听系统允许或拒绝app访问相册的行为,可用以下代码:

/*
     通过ALAuthorizationStatus这个状态来获取app是允许还是拒绝访问相册的行为,它的值有:
     ALAuthorizationStatusNotDetermined = 0, 用户尚未做出了选择这个应用程序的问候
     ALAuthorizationStatusRestricted,        此应用程序没有被授权访问的照片数据。可能是家长控制权限。
     ALAuthorizationStatusDenied,            用户已经明确否认了这一照片数据的应用程序访问.
     ALAuthorizationStatusAuthorized         用户已授权应用访问照片数据.
     */
    ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];

这是今天关于ALAssetsLibrary的简单回顾,下次再进一步提升自己。

你可能感兴趣的:(ALAssetsLabrary的简单应用)