IOS 获取摄像头/麦克风/相册 权限_starmier的博客-程序员信息网_ios 开发 获取麦克风权限

技术标签: 音视频  ios  

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:AVMediaTypeAudio
								 completionHandler:^(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中的设置如下所示:
权限设置.png

4、后台处理

如果后台依旧需要采集声音,则需要设置后台,如下所示:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_50912862/article/details/115762448

智能推荐

Microsoft版的caffe在windows10下编译_龙矜的博客-程序员信息网

Microsoft版的caffe在windows10下编译使用python1.微软caffe2.Cuda3.Cudnn合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLo...

魅族18关闭桌面悬浮球方法步骤_爱学习的小兔子的博客-程序员信息网_魅族手机旋转屏悬浮球

现在用户们都已经非常适应全面屏手机的使用了。但刚买的手机桌面还是会有一个悬浮导航键。很多小伙伴想要关闭却不知道方法。于是今天换换就给大家介绍一下魅族18关闭悬浮球的方法吧!魅族18关闭悬浮球步骤1、通常这些手机使用的更改都是在设置里面操作。2、进入设置后。找到辅助功能。3、在辅助功能里我们就可以看见悬浮球选项。4、选择悬浮球右侧按钮点击即可关闭。5、当然。还有一种更简单的方法便是用户们下拉菜单栏。点击悬浮球选项就能关闭。...

【FPGA教程案例33】通信案例3——基于FPGA的BPSK调制信号产生,通过matlab测试其星座图_fpga bpsk_fpga和matlab的博客-程序员信息网

BPSK(BinaryPhaseShiftKeying)-------二进制相移键控。是把模拟信号转换成数据值的转换方式之一,利用偏离相位的复数波浪组合来表现信息键控移相方式。BPSK使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。BPSK的映射关系如下所示其实现结构图如下图所示首先,将输入的1010二进制数据中的0都转化为-1,使得非极性码变为极性码。然后将数据通过一个FIR低通滤波器进行成型处理,成型滤波的主要目的是。......

算法起步之Dijkstra算法_weixin_30242907的博客-程序员信息网

算法起步之Dijkstra算法 原文: 算法起步之Dijkstra算法 友情提示:转载请注明出处【作者 idlear 博客:http://blog.csdn.net/idlear/article/details/19687579】 Dijkst...

js中对象合并的4种方式,数组合并的4种方法_燕穗子博客的博客-程序员信息网_js 对象合并

一、对象合并1、拓展运算符(...)2、Object.assign()3、递归赋值4、jquery中的extend()二、数组合并1、扩展操作符2、使用array.concat()方法进行合并3、关于Apply4、array.push()方法进行合并

HTML 初识笔记总结(一)_前小白,快跑!的博客-程序员信息网_初识html实验总结

HTML 初识笔记总结(一)hello world! 我是前小白,一名平凡的小白级前端工程师。一、 HTML常见页面规范 &lt;!DOCTYPE html&gt;叫浏览器用 HTML5 文档格式解析该网页 &lt;html lang="en"&gt; 网页语言中文 &lt;head&gt; &lt;meta charset="UTF-8"&gt; 设定网页字符编码,常用的有utf-8和gb2312; &lt;meta name="viewpor

随便推点

springboot 整合zookeeper框架(curator)_风中~少年的博客-程序员信息网_error org.apache.curator.framework.imps.curatorfra

1、版本 springboot 2.2.7.RELEASE jdk 1.8 zookeeper 3.5.6 curator 3.2.02、pom文件:这里只列出zookeeper 和 curator&lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.zz&lt;/groupId&gt; &lt;artifactId&gt;zz-log&lt;/arti...

C++ primer Plus 第十五章 友元、异常和其他_追随光、成为光的博客-程序员信息网

15.1友元类并非只有友元函数,还可以有友元类,友元类的所有方法都可以访问原始类的私有成员和保护成员。下面我们通过一个例子来讲解一下友元类定义TV类和Rmote类,分别作为电视机和遥控器的类由于遥控器可以控制电视机,即遥控器可以访问电视机的成员,所以要将Rmote类声明为TV的友元类,但是如果只是将Rmote类的一个成员函数声明为友元函数,则需要知道Rmote类的声明,所以TV类应...

windows默认调试器注册表位置_风清扬_jd的博客-程序员信息网

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]"UserDebuggerHotKey"=dword:00000000"Debugger"="\"C:\\Windows\\system32\\vsjitdebugger.exe\" -p %ld -e %ld"[HKEY_LOCAL_MACHINE\SOFTWARE\Micros

【论文笔记】QBSUM: 基于查找的文本摘要数据集_啦啦伟vv的博客-程序员信息网

QBSUM: a Large-Scale Query-Based Document Summarization Dataset fromReal-world Applications基于查询的文档摘要旨在提取或生成直接回答或与搜索查询相关的文档的摘要。这是一项重要的技术,可以有益于各种应用程序,例如搜索引擎、文档级机器阅读理解和聊天机器人。目前,为基于查询的摘要设计的数据集数量不足,现有数据集的规模和质量也有限。此外,据我们所知,没有公开可用的基于中文查询的文档摘要数据集。在本文中,我们提出了 QBSUM

Jquery easyui从零单排之datagrid查询_我本良人的博客-程序员信息网

这里开始学习datagrid查询功能的实现。一、前台代码: Start from zero <table id="dg" title="Client Side Pagination" toolbar="#tb" fitcolumns="true" rownumbers="true"

InSAR 大气校正数据 GACOS_dingli8570的博客-程序员信息网

Generic Atmospheric Correction Online Service for InSAR (GACOS) 是纽卡斯尔大学Li Zhenhong 教授团队提供大气改正数据,数据可以在网站 http://ceg-research.ncl.ac.uk/v2/gacos/上进行申请,时间分辨率可以精确到分钟,空间分辨率为90m。申请到数据之后可以利用该数据对InSAR的...

推荐文章

热门文章

相关标签