iOS-硬件授权检测【通讯录、相机、相册、日历、麦克风、定位授权】
总结下几个常用到的获取手机权限,从iOS8以后,获取手机某种权限需要在info.plist文件中添加权限的描述文件
<key>NSContactsUsageDescription</key>
<string>App需要您的允许,才能访问通讯录</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的允许,才能访问蓝牙</string>
<key>NSCalendarsUsageDescription</key>
<string>App需要您的允许,才能访问日历</string>
<key>NSCameraUsageDescription</key>
<string>App需要您的允许,才能访问相机</string>
<key>NSHealthUpdateUsageDescription</key>
<string>App需要您的允许,才能访问健康更新 </string>
<key>NSLocationAlwaysUsageDescription</key>
<string></string>
<key>NSLocationUsageDescription</key>
<string>App需要您的允许,才能访问位置</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的允许,才能访问麦克风</string>
<key>NSMotionUsageDescription</key>
<string>App需要您的允许,才能访问运动与健身</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的允许,才能访问相册</string>
<key>NSRemindersUsageDescription</key>
<string>App需要您的允许,才能访问提醒事项</string>
<!-- xcode9以后必须要加-->
<key>NSPhotoLibraryAddUsageDescription</key>
<string>App需要您的允许,才能访问相册</string>
1.通讯录
头文件
#import <AddressBook/AddressBook.h>
获取通讯录权限并请求授权
- (void)addressAuthorization{
ABAuthorizationStatus authStatus = ABAddressBookGetAuthorizationStatus();
if (authStatus == kABAuthorizationStatusNotDetermined) {
// 请求授权
ABAddressBookRef ressBookRef = ABAddressBookCreate();
ABAddressBookRequestAccessWithCompletion(ressBookRef, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"授权成功!");
} else {
NSLog(@"授权失败!");
}
});
}
else if(authStatus == kABAuthorizationStatusRestricted || authStatus == kABAuthorizationStatusDenied) {
// 未授权 }
else{
// 已授权
}
}
2.相机
头文件
#import <AVFoundation/AVFoundation.h>
#import <AssetsLibrary/AssetsLibrary.h>
获取相机权限(直接跳相机,在跳到相机时,会提示是否允许访问相机)
- (void)cameraAuthorization{
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (authStatus == ALAuthorizationStatusDenied||authStatus == ALAuthorizationStatusRestricted) {
NSLog(@"未授权!");
return ;
}
}
3.相册
头文件
#import <AVFoundation/AVFoundation.h>
#import <AssetsLibrary/AssetsLibrary.h>
获取相册权限(直接跳相册,在跳到相册时,会提示是否允许访问相册)
- (void)photoAuthorization{
//判断是否已授权
ALAuthorizationStatus authStatus = [ALAssetsLibrary authorizationStatus];
if (authStatus == ALAuthorizationStatusDenied) {
NSLog(@"未授权!");
return;
}
}
4.日历
头文件
#import <EventKit/EventKit.h>
获取日历权限并请求授权
-(void)calendarAuthorization{
EKAuthorizationStatus authStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
if (EKAuthorizationStatusNotDetermined == authStatus) {
EKEventStore *event = [[EKEventStore alloc] init];
//授权成功,执行后续操作
[event requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted) {
NSLog(@"授权成功!");
} else {
NSLog(@"授权失败!");
}
}];
}
else if(authStatus == EKAuthorizationStatusRestricted || authStatus == EKAuthorizationStatusDenied) {
// 未授权 }
else{
// 已授权
}
}
5.麦克风
头文件
获取麦克风权限并请求授权
- (void)microphoneAuthorization{
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
if (authStatus == AVAuthorizationStatusNotDetermined) {// 未询问用户是否授权
//第一次询问用户是否进行授权
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
NSLog(@"授权成功!");
}
else {
NSLog(@"授权失败!");
}
}];
}
else if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied) {
// 未授权 }
else{
// 已授权
}
}
6.定位
头文件
#import <CoreLocation/CoreLocation.h>
#import <LocalAuthentication/LocalAuthentication.h>
获取定位权限(请求定位时,会提示是否允许访问位置)
- (void)locationAuthorization{
CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
//第一次询问用户是否进行授权
if (kCLAuthorizationStatusNotDetermined == authStatus) {
//[[[CLLocationManager alloc] init] requestWhenInUseAuthorization];
//开始定位用户的位置
//[self.locMgr startUpdatingLocation]; }
else if(authStatus == kCLAuthorizationStatusRestricted || authStatus == kCLAuthorizationStatusDenied) {
// 未授权
}
else{
// 已授权
} }
iOS-硬件授权检测【通讯录、相机、相册、日历、麦克风、定位授权】的更多相关文章
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等(转)
转载自:http://www.cocoachina.com/ios/20151214/14502.html iOS系统版本的不断升级的前提,伴随着用户使用设备的安全性提升,iOS系统对于App需要使用 ...
- 【转】iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
iOS系统版本的不断升级的前提,伴随着用户使用设备的安全性提升,iOS系统对于App需要使用的硬件限制也越来越严格,App处理稍有不妥,轻则造成功能不可用用户还不知道,重则会造成App Crash. ...
- iOS 定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等授权检测
金田 iOS系统版本的不断升级的前提,伴随着用户使用设备的安全性提升,iOS系统对于App需要使用的硬件限制也越来越严格,App处理稍有不妥,轻则造成功能不可用用户还不知道,重则会造成App Cras ...
- iOS:检测多媒体(相机、相册、麦克风)设备权限,弹框提示
一.感言 新年伊始,万象更新,一转眼,就2019年了. 作为一个科班生,从事移动端开发好几年了,回顾曾经的摸爬滚打,兢兢业业,严格的来说,多少算是入行了. 过去成绩如何暂且不说,新的一年,我当加倍努力 ...
- iOS开发小技巧--相机相册的正确打开方式
iOS相机相册的正确打开方式- UIImagePickerController 通过指定sourceType来实现打开相册还是相机 UIImagePickerControllerSourceTypeP ...
- iOS开发——高级篇——通讯录
一.简介 1.如何访问用户的通讯录1)在iOS9之前有2个框架可以访问用户的通讯录AddressBookUI.framework提供了联系人列表界面.联系人详情界面.添加联系人界面等一般用于选择联系人 ...
- iOS开发——高级技术&通讯录服务
通讯录服务 AddressBook iOS中带有一 个Contacts应用程序来管理联系人,但是有些时候我们希望自己的应用能够访问或者修改这些信息,这个时候就要用到 AddressBook.frame ...
- iOS开发——高级技术&通讯录功能的实现
通讯录功能的实现 iOS 提供了对通讯录操作的组建,其中一个是直接操作通讯录,另一个是调用通讯录的 UI 组建.实现方法如下: 添加AddressBook.framework到工程中. 代码实现: 1 ...
- iOS中判断照片和相机权限
1.照片权限判断 在iOS6之后,app中使用照片(即自带相册)需要用户权限验证,所以我们可以做一个权限判断给出友好的提示或者界面效果. 相册判断需要导入 <AssetsLibrary/Asse ...
随机推荐
- Vijos P1103 校门外的树【线段树,模拟】
校门外的树 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……, ...
- BZOJ1078: [SCOI2008]斜堆
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1078 每一次进入的点一定是一个极左节点,然后将它所处在的整棵树左右翻转.加上一些情况的处理. ...
- 打开redis和solr
- 全国银行列表json格式
var list=[ { value:'CDB', text:'国家开发银行' }, { value:'ICBC', text:'中国工商银行' }, { value:'ABC', text:'中国农 ...
- 客户端怎么查看SVN的代码库
安装SVN客户端,比如TortoiseSVN,然后将代码库checkout到本地,或者通过客户端的版本库浏览器直接连接SVN服务器查看代码库的目录结构. 如果SVN服务器端安装的时候是和Apache集 ...
- 在form里面,放了四个UEditor,怎么在后台分别获取它们值
1) 默认情况下提交到后台的表单名称是 "editorValue",在editor_config.js中可以配置,参数名为textarea. 2) 可以在容器标签(即script标 ...
- webzip怎么用 如何用webzip下载整个网站?
相信很多站长对webzip这款软件都并不感到陌生,它功能强大,能够完整下载网站的内容,或者你也可以选择自行设置下载的层数.文件类型.网页与媒体文件的定位等等.具体详情你可以在百度上去搜一下.由于web ...
- JavaScript常见封装方法
1.最简单的,使用变量,然后用匿名函数包裹,不封装 2.对象字面量简单封装(不完整的模块模式,因为无法达到变量.方法私有效果.不过确实有分离和组织代码的能力,也就算一种简略的模块模式的实现方式) va ...
- CSS3 [attribute^=value] 选择器
设置 class 属性值以 "test" 开头的所有 div 元素的背景色: div[class^="test"] { background:#ffff00; ...
- 03 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之web层
Github:https://github.com/nnngu 项目源代码:https://github.com/nnngu/nguSeckill 前端交互流程设计 对于一个系统,需要产品经理.前端工 ...