IOS 获取摄像头/麦克风/相册 权限

  • 1、获取摄像头/麦克风权限
    • 1.1、检测当前的权限状态
    • 1.2、请求麦克风权限
  • 2、获取相册权限
    • 2.1、检测权限
    • 2.2、请求授权
  • 3、版本兼容
  • 4、后台处理

1、获取摄像头/麦克风权限

#import <AVFoundation/AVFoundation.h> //类型定义
typedef NSString * AVMediaType NS_EXTENSIBLE_STRING_ENUM;AVF_EXPORT AVMediaType const AVMediaTypeVideo                 NS_AVAILABLE(10_7, 4_0);
AVF_EXPORT AVMediaType const AVMediaTypeAudio                 NS_AVAILABLE(10_7, 4_0);
AVF_EXPORT AVMediaType const AVMediaTypeText                  NS_AVAILABLE(10_7, 4_0);
AVF_EXPORT AVMediaType const AVMediaTypeClosedCaption         NS_AVAILABLE(10_7, 4_0);
AVF_EXPORT AVMediaType const AVMediaTypeSubtitle              NS_AVAILABLE(10_7, 4_0);
AVF_EXPORT AVMediaType const AVMediaTypeTimecode              NS_AVAILABLE(10_7, 4_0);
AVF_EXPORT AVMediaType const AVMediaTypeMetadata              NS_AVAILABLE(10_8, 6_0);
AVF_EXPORT AVMediaType const AVMediaTypeMuxed                 NS_AVAILABLE(10_7, 4_0);

1.1、检测当前的权限状态

AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
//权限定义
typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {AVAuthorizationStatusNotDetermined = 0, /* 没有询问是否开启麦克风*/AVAuthorizationStatusRestricted    = 1, /* 未授权,家长限制*/AVAuthorizationStatusDenied        = 2, /* 玩家未授权*/AVAuthorizationStatusAuthorized    = 3, /* 玩家授权*/
} API_AVAILABLE(macos(10.14), ios(7.0)) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;

如果要获取摄像头的权限,则将mediaType改为 AVMediaTypeVideo 即可。

1.2、请求麦克风权限

if (authStatus == AVAuthorizationStatusNotDetermined) {[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudiocompletionHandler:^(BOOL granted) {dispatch_async(dispatch_get_main_queue(), ^{if (granted) {[self doSomething];} else {[self showAlertWithTitle:@"温馨提示" message:@"您没有开启\"麦克风\"权限\n 无法进行通话。请在设置中开启麦克风权限。"];}});}];} else if (authStatus == AVAuthorizationStatusDenied || authStatus == AVAuthorizationStatusRestricted) {[self showAlertWithTitle:@"温馨提示" message:@"您没有开启\"麦克风\"权限\n 无法进行通话。\n 请在设置中开启麦克风权限。"];} else if (authStatus == AVAuthorizationStatusAuthorized) {[self doSomething];}

如果要获取摄像头的权限,则将mediaType改为 AVMediaTypeVideo 即可。

2、获取相册权限

OS8之后加入了PhotoKit,使用需要

 #import <Photos/Photos.h>//权限类型
typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
PHAuthorizationStatusNotDetermined = 0, /* 未询问用户是否授权*/
PHAuthorizationStatusRestricted, /* 未授权,例如家长控制*/
PHAuthorizationStatusDenied, /* 未授权,用户拒绝造成的*/
PHAuthorizationStatusAuthorized /* 已授权*/
}

2.1、检测权限

PHAuthorizationStatus photoAuthStatus = [PHPhotoLibrary authorizationStatus];

2.2、请求授权

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
// 用户同意授权
}else {
// 用户拒绝授权
}

3、版本兼容

IOS10 需要在plist文件中添加获取权限声明,否则会崩溃,提示信息如下:

[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description.
The app's Info.plist must contain an NSMicrophoneUsageDescription key with a string value explaining to the user how the app uses this data.

plist中的设置如下所示:

4、后台处理

如果后台依旧需要采集声音,则需要设置后台,如下所示:

IOS 获取摄像头/麦克风/相册 权限相关推荐

  1. iOS获取设备和APP权限信息(内含plist文件的读写)

    文章目录 前言 获取设备当前的各种信息 获取APP能获取到的权限信息(内含plist文件的读写) 2019.11.04 更新 前言 下面各种获取到的信息分为了两大类,一种是获取APP载体设备当前的各种 ...

  2. iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册...

    2019独角兽企业重金招聘Python工程师标准>>> 1. 权限 在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置 ...

  3. vue获取麦克风_前端多媒体-1.获取摄像头麦克风

    获取视频/音频引言 因为最近在学习WebRTC,前端就需要学习一下媒体的相关知识. MediaDevices.getUserMedia() MediaDevice.getUserMedia()与Web ...

  4. Android获取摄像头和存储空间权限

    经实验,无论Android版本是6.0+还是6.0-,稳妥起见,如下设置: Step1:在AndroidManifest.xml中添加如下内容: <!-- 摄像头权限 --> <us ...

  5. iOS-iOS 11图片保存相册权限 NSPhotoLibraryAddUsageDescription

    一.iOS 11图片保存相册权限 NSPhotoLibraryAddUsageDescription NSPhotoLibraryAddUsageDescription是iOS 11新推出的隐私规则, ...

  6. 获取摄像头和麦克风权限_js获取浏览器摄像头和麦克风权限

    前言 项目中会使用到摄像头或麦克风设备,这就需要我们获取浏览器的摄像头和麦克风权限,权限是无法通过js操控的,必须由浏览器用户设置. 下面我来告诉大家如何获取浏览器的摄像头或麦克风的权限,使浏览器弹出 ...

  7. iOS摄像头和相册-UIImagePickerController-浅析(转)

    iOS摄像头和相册-UIImagePickerController-浅析(转) 转自: http://blog.sina.com.cn/s/blog_7b9d64af0101cfd9.html 在一些 ...

  8. 相册权限_苹果手机惊现漏洞?App在未获取相册权限的情况下成功读取照片

    近日,知乎上网友爆料发现苹果手机存在漏洞,一款名叫"时间规划局"的App可在未获取相册权限的情况下读取照片.专家猜测可能是App调用了苹果的私有库,绕过了系统的授权机制. 2月26 ...

  9. iOS 相册权限绕过漏洞

    在 App Store 上有一款名叫 "时间规划局" 的应用可以在未获取相册权限的情况下读取照片.可能是 App 调用了苹果的私有库,绕过了系统的授权机制. 在 iOS 12.1. ...

最新文章

  1. 树莓派4安装Android 并 root (LineageOS 17.1)
  2. 我为什么弃用GAN?
  3. HBase眼高手低从Shell到IDEA编程、心路笔记、踩坑过程
  4. call()、apply()、bind()
  5. HDU - 6746 Civilization(贪心+模拟)
  6. Android客户端打包方案分享
  7. python时间序列如何拟合曲线_以“datetime”格式拟合时间序列的曲线?
  8. Atitit 登录账号管理法passport 目录 1. 总则 1 1.1. 身份分类登录账号 管理员 操作人员 普通用户 1 1.2. 安全考虑,必须单独分开的账号储存表,使用不同等加密技术与秘
  9. PLSQL Developer详细安装步骤
  10. java自学网视频教程,系列教学
  11. 学习记录:python糗百爬虫
  12. 微信播放在服务器视频无法播放,微信收藏的视频不能播放怎么办?怎么收藏视频?...
  13. mmdetection2.24.1修改backbone(使用mmcls和timm已有模型)
  14. 网易互娱动效设计师 | 游戏动效与美术特效的区别
  15. 对英国房屋价格建模并预测 ---《量化金融R语言初级教程》
  16. 电厂计算机房消防,3 燃煤电厂建(构)筑物的火灾危险性分类、耐火等级及防火分区...
  17. 如何查看进程内存情况?
  18. 3D打印成型成型原理有哪些?性价比高的教学3D打印机如何选购?
  19. intellij idea打开就闪退或关闭详细解决办法
  20. tkinter窗口布局pack方法详解

热门文章

  1. windows系统 桌面时钟控件
  2. 上海站 Meetup 预告 | 从实时音视频到可交互的 PPT
  3. el-upload上传文件携带额外参数
  4. overlay(VLAN,VxLAN)、underlay网络、大二层概述
  5. 北欧神话人物关系图—原始之战
  6. 亚马逊云成为瑞士电信首选公有云提供商;思科完成收购网络漏洞管理公司Kenna Security | 全球TMT...
  7. 7-8 看电影 (10 分)
  8. Oracle闪回区满(ORA-16014)
  9. Python+Selenium.webdriver实现WEB端UI自动化测试(实例脚本)
  10. EXCEL——单元格内输入回车符