在iOS6.0以上系统增加了隐私的选项,例如你的相册,通讯录,地理位置等,都会被保护,任意一个第三方的app 访问都要经过用户自己的同意,
例如:
这样我们自己的app 有时候也会需要知道用户是同意了还是不同意,好做一些处理。
这个也是有办法解决的,具体方法是:
1. 导入库“AssetsLibrary.framework”
2.在要用的类中引入头文件:#import<AssetsLibrary/ALAssetsLibrary.h>
3.在要调用系统相册的方法中加入一下代码:
- if ([ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusNotDetermined) {
-
- ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
-
- [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
-
- if (*stop) {
- //点击“好”回调方法:这里是重点
- NSLog(@"好");
- return;
-
- }
- *stop = TRUE;
-
- } failureBlock:^(NSError *error) {
-
- //点击“不允许”回调方法:这里是重点
- NSLog(@"不允许");
- [self dismissViewControllerAnimated:YES completion:nil];
-
- }];
- }
这里我是在一个button里面做了处理,如下:
- -(IBAction)LoadPhotoAlbum:(id)sender
- {
- if ([ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusNotDetermined) {
-
- ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
-
- [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
-
- if (*stop) {
- //点击“好”回调方法:
- NSLog(@"好");
- return;
-
- }
- *stop = TRUE;
-
- } failureBlock:^(NSError *error) {
-
- //点击“不允许”回调方法:
- NSLog(@"不允许");
- [self dismissViewControllerAnimated:YES completion:nil];
-
- }];
- }
-
- UIImagePickerController *PickerC = [[UIImagePickerController alloc] init];
- PickerC.delegate = self;
- PickerC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
- if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
- popOver = [[UIPopoverController alloc] initWithContentViewController:PickerC];
- [popOver presentPopoverFromRect:CGRectMake(0, 800, 500, 500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
-
- popOver.delegate = self;
- } else {
- [self presentViewController:PickerC animated:YES completion:nil];
- }
-
- }
然后就完全ok了。
如果我选择了“不允许”我会自己让我的imagePickerView dismiss。
如果点击了“好”。那就可以正常访问了:
下一步就是人脸识别了:
ok了。
源代码下载
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。