iOS之访问权限

您所在的位置:网站首页 ios权限管理在哪里 iOS之访问权限

iOS之访问权限

2023-03-13 09:57| 来源: 网络整理| 查看: 265

从ios7开始,用户可以在设置->隐私->中开启或关闭某些系统权限,比如访问相册,相机 ,通讯录,地图,麦克风等。因此,在我们的程序中,如果要访问系统的某些功能,则最好判断一下权限是否开启。否则用户不能正常使用,也一头雾水,还以为程序出错了。

访问摄像头:

需要导入

#import 

[objc] view plain copyif(isIOS7AndLater) {    NSString *mediaType = AVMediaTypeVideo;// Or AVMediaTypeAudio          AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];          NSLog(@"---cui--authStatus--------%d",authStatus);          // This status is normally not visible—the AVCaptureDevice class methods for discovering devices do not return devices the user is restricted from accessing.          if(authStatus ==AVAuthorizationStatusRestricted){              NSLog(@"Restricted");          }else if(authStatus == AVAuthorizationStatusDenied){              // The user has explicitly denied permission for media capture.              NSLog(@"Denied");     //应该是这个,如果不允许的话              UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"                                                              message:@"请在设备的"设置-隐私-相机"中允许访问相机。"                                                             delegate:self                                                    cancelButtonTitle:@"确定"                                                    otherButtonTitles:nil];              [alert show];              [alert release];              return;          }          else if(authStatus == AVAuthorizationStatusAuthorized){//允许访问              // The user has explicitly granted permission for media capture, or explicit user permission is not necessary for the media type in question.              NSLog(@"Authorized");                        }else if(authStatus == AVAuthorizationStatusNotDetermined){              // Explicit user permission is required for media capture, but the user has not yet granted or denied such permission.              [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {                  if(granted){//点击允许访问时调用                      //用户明确许可与否,媒体需要捕获,但用户尚未授予或拒绝许可。                      NSLog(@"Granted access to %@", mediaType);                  }                  else {                      NSLog(@"Not granted access to %@", mediaType);                  }                                }];          }else {              NSLog(@"Unknown authorization status");          }  }  

麦克风权限检测:

[objc] view plain copy//检测麦克风功能是否打开    [[AVAudioSessionsharedInstance]requestRecordPermission:^(BOOL granted) {        if (!granted)        {            [ViewUtilalertViewWithString:NSLocalizedString(@"麦克风功能未开启",nil)];        }        else        {                        [selfrecord:sender];        }    }];  相册权限检测:需要

#import  //导入此类和AssetsLibrary.framework框架

[objc] view plain copyint author = [ALAssetsLibrary authorizationStatus];              NSLog(@"author type:%d",author);              if(author == ALAuthorizationStatusRestricted || author == ALAuthorizationStatusDenied) {                  // The user has explicitly denied permission for media capture.                  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"无法使用相册"                                                                  message:@"请在iPhone的\"设置-隐私-照片\"中允许访问照片。"                                                                 delegate:self                                                        cancelButtonTitle:@"确定"                                                        otherButtonTitles:nil];                  [alert show];                  [alert release];                  return;  

ALAssetsLibrary详解

ALAssetsLibrary类是代表系统中整个资源库,使用它可以访问资源库中的资源和保存照片,视频等功能。

    _library = [[ALAssetsLibrary alloc]init];    //判断当前应用是否能访问相册资源    /*     typedef NS_ENUM(NSInteger, ALAuthorizationStatus) {     ALAuthorizationStatusNotDetermined = 0, 用户尚未做出了选择这个应用程序的问候     ALAuthorizationStatusRestricted,        此应用程序没有被授权访问的照片数据。可能是家长控制权限。

     ALAuthorizationStatusDenied,            用户已经明确否认了这一照片数据的应用程序访问.     ALAuthorizationStatusAuthorized         用户已授权应用访问照片数据.     }     */

    int author = [ALAssetsLibrary authorizationStatus];    NSLog(@"author type:%d",author);

    //关闭监听共享照片流产生的频繁通知信息    [ALAssetsLibrary disableSharedPhotoStreamsSupport];        //创建一个相册到相册资源中,并通过block返回创建成功的相册ALAssetsGroup    [_library addAssetsGroupAlbumWithName:@"test" resultBlock:^(ALAssetsGroup *group) {        //NSString *const ALAssetsGroupPropertyName;        //NSString *const ALAssetsGroupPropertyType;        //NSString *const ALAssetsGroupPropertyPersistentID;        //NSString *const ALAssetsGroupPropertyURL;        //查看相册的名字        NSLog(@"ALAssetsGroupPropertyName:%@",[group valueForProperty:ALAssetsGroupPropertyName]);        //查看相册的类型        NSLog(@"ALAssetsGroupPropertyType:%@",[group valueForProperty:ALAssetsGroupPropertyType]);        //查看相册的存储id        NSLog(@"ALAssetsGroupPropertyPersistentID:%@",[group valueForProperty:ALAssetsGroupPropertyPersistentID]);        //查看相册存储的位置地址        NSLog(@"ALAssetsGroupPropertyURL:%@",[group valueForProperty:ALAssetsGroupPropertyURL]);        groupURL = [group valueForProperty:ALAssetsGroupPropertyURL];

    } failureBlock:^(NSError *error) {            }];

新添加了一个名为test的相册

  [NSThread sleepForTimeInterval:0.5];    //通过url地址在相册资源中获取该地址的资源文件ALAsset,有可能是相片或视频    [_library assetForURL:[NSURL URLWithString:@""] resultBlock:^(ALAsset *asset) {        /*         NSString *const ALAssetPropertyType;         NSString *const ALAssetPropertyLocation;         NSString *const ALAssetPropertyDuration;         NSString *const ALAssetPropertyOrientation;         NSString *const ALAssetPropertyDate;         NSString *const ALAssetPropertyRepresentations;         NSString *const ALAssetPropertyURLs;         NSString *const ALAssetPropertyAssetURL;         */        //查看资源的地理位置信息        NSLog(@"ALAssetPropertyLocation:%@",[asset valueForProperty:ALAssetPropertyLocation]);        //如果资源是视频,查看视频的时长        NSLog(@"ALAssetPropertyDuration:%@",[asset valueForProperty:ALAssetPropertyDuration]);        //查看资源的方向,图片的旋转方向        NSLog(@"ALAssetPropertyOrientation:%@",[asset valueForProperty:ALAssetPropertyOrientation]);        //查看资源的创建时间        NSLog(@"ALAssetPropertyDate:%@",[asset valueForProperty:ALAssetPropertyDate]);        //查看资源的描述信息        NSLog(@"ALAssetPropertyRepresentations:%@",[asset valueForProperty:ALAssetPropertyRepresentations]);        NSLog(@"ALAssetPropertyURLs:%@",[asset valueForProperty:ALAssetPropertyURLs]);        //查看资源的url路径        NSLog(@"ALAssetPropertyAssetURL:%@",[asset valueForProperty:ALAssetPropertyAssetURL]);    } failureBlock:^(NSError *error) {            }];    //通过url地址获取相册资源中的一个相册    [_library groupForURL:groupURL resultBlock:^(ALAssetsGroup *group) {        NSLog(@"ALAssetsGroupPropertyName:%@",[group valueForProperty:ALAssetsGroupPropertyName]);    } failureBlock:^(NSError *error) {        }];    //根据选择的类型遍历相册资源中的相对应类型的所有相册,其中stop行参是指针,表示是否停止迭代,当赋值为false则停止    /*     enum {     ALAssetsGroupLibrary        = (1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3