获取相机,不能获得麦克风的权限,通讯录权限,确认是否拥有这些权限

oppoa51 手机相机故障无法连接,语音麦克风还有视频突然也都不能用,权限已经开启了也没用,应用程序无响应然后就卡住了!怎么回事呀?
您可以邀请优质答主更快回答您的问题
擅长领域:&&&&
在手机数码分类下共有1681个回答
擅长领域:&&&&
在手机数码分类下共有903个回答
擅长领域:&&&&
在手机数码分类下共有664个回答
擅长领域:&&&&
在手机数码分类下共有480个回答
Oo城管大队长oO
擅长领域:&&&&
在手机数码分类下共有404个回答
xiwind2588
擅长领域:
在手机数码分类下共有238个回答
加载更多答主
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?> 博客详情
引入头文件
应用启动后,检测应用中是否有联网权限 CTCellularData *cellularData = [[CTCellularData alloc]init];
cellularData.cellularDataRestrictionDidUpdateNotifier =
^(CTCellularDataRestrictedState state){
//获取联网状态
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
查询应用是否有联网功能 CTCellularData *cellularData = [[CTCellularData alloc]init];
CTCellularDataRestrictedState state = cellularData.restrictedS
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
相册权限--iOS 9.0之前
导入头文件 AssetsL
检查是否有相册权限
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch (status) {
case ALAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case ALAuthorizationStatusDenied:
NSLog(@"Denied");
case ALAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case ALAuthorizationStatusRestricted:
NSLog(@"Restricted");
相册权限--iOS 8.0之后
导入头文件 P
检查是否有相册权限 PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
switch (photoAuthorStatus) {
case PHAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case PHAuthorizationStatusDenied:
NSLog(@"Denied");
case PHAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case PHAuthorizationStatusRestricted:
NSLog(@"Restricted");
![Uploading aca7ba38c5f8c0_695906.png . . .]获取相册权限
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
相机和麦克风权限
导入头文件 AVF
检查是否有相机或麦克风权限 AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//相机权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];//麦克风权限
switch (AVstatus) {
case AVAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case AVAuthorizationStatusDenied:
NSLog(@"Denied");
case AVAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case AVAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取相机或麦克风权限 [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {//相机权限
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {//麦克风权限
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
导入头文件 CoreL
由于iOS8.0之后定位方法的改变,需要在info.plist中进行配置;
检查是否有定位权限
BOOL isLocation = [CLLocationManager locationServicesEnabled];
if (!isLocation) {
NSLog(@"not turn on the location");
CLAuthorizationStatus CLstatus = [CLLocationManager authorizationStatus];
switch (CLstatus) {
case kCLAuthorizationStatusAuthorizedAlways:
NSLog(@"Always Authorized");
case kCLAuthorizationStatusAuthorizedWhenInUse:
NSLog(@"AuthorizedWhenInUse");
case kCLAuthorizationStatusDenied:
NSLog(@"Denied");
case kCLAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case kCLAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取定位权限 CLLocationManager *manager = [[CLLocationManager alloc] init];
[manager requestAlwaysAuthorization];//一直获取定位信息
[manager requestWhenInUseAuthorization];//使用的时候获取定位信息
在代理方法中查看权限是否改变 - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
switch (status) {
case kCLAuthorizationStatusAuthorizedAlways:
NSLog(@"Always Authorized");
case kCLAuthorizationStatusAuthorizedWhenInUse:
NSLog(@"AuthorizedWhenInUse");
case kCLAuthorizationStatusDenied:
NSLog(@"Denied");
case kCLAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case kCLAuthorizationStatusRestricted:
NSLog(@"Restricted");
检查是否有通讯权限
UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
switch (settings.types) {
case UIUserNotificationTypeNone:
NSLog(@"None");
case UIUserNotificationTypeAlert:
NSLog(@"Alert Notification");
case UIUserNotificationTypeBadge:
NSLog(@"Badge Notification");
case UIUserNotificationTypeSound:
NSLog(@"sound Notification'");
获取推送权限 UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
通讯录权限
iOS9.0之前
导入头文件 @import AddressB
检查是否有通讯录权限
ABAuthorizationStatus ABstatus = ABAddressBookGetAuthorizationStatus();
switch (ABstatus) {
case kABAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case kABAuthorizationStatusDenied:
NSLog(@"Denied'");
case kABAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case kABAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取通讯录权限 ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"Authorized");
CFRelease(addressBook);
NSLog(@"Denied or Restricted");
iOS9.0及以后
导入头文件 @import C
检查是否有通讯录权限
CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
switch (status) {
case CNAuthorizationStatusAuthorized:
NSLog(@"Authorized:");
case CNAuthorizationStatusDenied:{
NSLog(@"Denied");
case CNAuthorizationStatusRestricted:{
NSLog(@"Restricted");
case CNAuthorizationStatusNotDetermined:{
NSLog(@"NotDetermined");
获取通讯录权限
CNContactStore *contactStore = [[CNContactStore alloc] init];
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
日历、备忘录权限
导入头文件
检查是否有日历或者备忘录权限
typedef NS_ENUM(NSUInteger, EKEntityType) {
EKEntityTypeEvent,//日历
EKEntityTypeReminder //备忘
EKAuthorizationStatus EKstatus = [EKEventStore
authorizationStatusForEntityType:EKEntityTypeEvent];
switch (EKstatus) {
case EKAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case EKAuthorizationStatusDenied:
NSLog(@"Denied'");
case EKAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case EKAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取日历或备忘录权限 EKEventStore *store = [[EKEventStore alloc]init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
素有获取权限的方法,多用于用户第一次操作应用,iOS 8.0之后,将这些设置都整合在一起,并且可以开启或关闭相应的权限。所有的权限都可以通过下面的方法打开: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
作者:Jack_lin 链接:https://www.jianshu.com/p/27eb 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)IOS开发中的这些权限,你搞懂了吗?_达内iOS培训
400-111-8989
IOS开发中的这些权限,你搞懂了吗?
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;
那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;4.在展示系统权限的对话框前,先向用户显示自定义的对话框,若用户选择不允许,默认无操作,若用户选择允许,再展示系统对话框。
上述情况在开发过程中是经常遇到的,不同方式的选择会影响最后用户交互体验。这一点感悟正是源于上一周工作遇到的问题:适配iOS10,如何获取应用联网权限用以管理系统对话框的显示管理。当我把这个问题解决后,感觉有必要将常用的iOS系统权限做一个总结,以便后用。
相机、麦克风权限
通讯录权限
日历、备忘录权限
引入头文件&@import CoreT
应用启动后,检测应用中是否有联网权限
CTCellularData *cellularData = [[CTCellularData alloc]init];
cellularData.cellularDataRestrictionDidUpdateNotifier = &^(CTCellularDataRestrictedState state){
//获取联网状态
switch (state) {
& &case kCTCellularDataRestricted:
& & & &NSLog(@"Restricrted");
& &case kCTCellularDataNotRestricted:
& & & &NSLog(@"Not Restricted");
& &case kCTCellularDataRestrictedStateUnknown:
& & & &NSLog(@"Unknown");
& &default:
查询应用是否有联网功能
CTCellularData *cellularData = [[CTCellularData alloc]init];
CTCellularDataRestrictedState state = cellularData.restrictedS
switch (state) {
case kCTCellularDataRestricted:
& &NSLog(@"Restricrted");
case kCTCellularDataNotRestricted:
& &NSLog(@"Not Restricted");
case kCTCellularDataRestrictedStateUnknown:
& &NSLog(@"Unknown");
相册权限--iOS 9.0之前
导入头文件@import AssetsL
检查是否有相册权限
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch (status) {
case ALAuthorizationStatusAuthorized:
& &NSLog(@"Authorized");
case ALAuthorizationStatusDenied:
& &NSLog(@"Denied");
case ALAuthorizationStatusNotDetermined:
& &NSLog(@"not Determined");
case ALAuthorizationStatusRestricted:
& &NSLog(@"Restricted");
相册权限--iOS 8.0之后
导入头文件@import P
检查是否有相册权限
PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
switch (photoAuthorStatus) {
case PHAuthorizationStatusAuthorized:
& &NSLog(@"Authorized");
case PHAuthorizationStatusDenied:
& &NSLog(@"Denied");
case PHAuthorizationStatusNotDetermined:
& &NSLog(@"not Determined");
case PHAuthorizationStatusRestricted:
& &NSLog(@"Restricted");
获取相册权限
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
& &NSLog(@"Authorized");
& &NSLog(@"Denied or Restricted");
相机和麦克风权限
导入头文件@import AVF
检查是否有相机或麦克风权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//相机权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];//麦克风权限
switch (AVstatus) {
case AVAuthorizationStatusAuthorized:
& &NSLog(@"Authorized");
case AVAuthorizationStatusDenied:
& &NSLog(@"Denied");
case AVAuthorizationStatusNotDetermined:
& &NSLog(@"not Determined");
case AVAuthorizationStatusRestricted:
& &NSLog(@"Restricted");
获取相机或麦克风权限
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {//相机权限
if (granted) {
& &NSLog(@"Authorized");
& &NSLog(@"Denied or Restricted");
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {//麦克风权限
if (granted) {
& &NSLog(@"Authorized");
& &NSLog(@"Denied or Restricted");
导入头文件@import CoreL
由于iOS8.0之后定位方法的改变,需要在info.plist中进行配置;
检查是否有定位权限
BOOL isLocation = [CLLocationManager locationServicesEnabled];
if (!isLocation) {
NSLog(@"not turn on the location");
CLAuthorizationStatus CLstatus = [CLLocationManager authorizationStatus];
switch (CLstatus) {
case kCLAuthorizationStatusAuthorizedAlways:
& &NSLog(@"Always Authorized");
case kCLAuthorizationStatusAuthorizedWhenInUse:
& &NSLog(@"AuthorizedWhenInUse");
case kCLAuthorizationStatusDenied:
& &NSLog(@"Denied");
case kCLAuthorizationStatusNotDetermined:
& &NSLog(@"not Determined");
case kCLAuthorizationStatusRestricted:
& &NSLog(@"Restricted");
获取定位权限
CLLocationManager *manager = [[CLLocationManager alloc] init];
[manager requestAlwaysAuthorization];//一直获取定位信息
[manager requestWhenInUseAuthorization];//使用的时候获取定位信息
在代理方法中查看权限是否改变
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
switch (status) {
case kCLAuthorizationStatusAuthorizedAlways:
& &NSLog(@"Always Authorized");
case kCLAuthorizationStatusAuthorizedWhenInUse:
& &NSLog(@"AuthorizedWhenInUse");
case kCLAuthorizationStatusDenied:
& &NSLog(@"Denied");
case kCLAuthorizationStatusNotDetermined:
& &NSLog(@"not Determined");
case kCLAuthorizationStatusRestricted:
& &NSLog(@"Restricted");
检查是否有通讯权限
UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
switch (settings.types) {
case UIUserNotificationTypeNone:
& &NSLog(@"None");
case UIUserNotificationTypeAlert:
& &NSLog(@"Alert Notification");
case UIUserNotificationTypeBadge:
& &NSLog(@"Badge Notification");
case UIUserNotificationTypeSound:
& &NSLog(@"sound Notification'");
获取推送权限
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
通讯录权限
导入头文件&@import AddressB
检查是否有通讯录权限
ABAuthorizationStatus ABstatus = ABAddressBookGetAuthorizationStatus();
switch (ABstatus) {
case kABAuthorizationStatusAuthorized:
& &NSLog(@"Authorized");
case kABAuthorizationStatusDenied:
& &NSLog(@"Denied'");
case kABAuthorizationStatusNotDetermined:
& &NSLog(@"not Determined");
case kABAuthorizationStatusRestricted:
& &NSLog(@"Restricted");
获取通讯录权限
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if (granted) {
& &NSLog(@"Authorized");
& &CFRelease(addressBook);
& &NSLog(@"Denied or Restricted");
日历、备忘录权限
导入头文件
检查是否有日历或者备忘录权限
typedef NS_ENUM(NSUInteger, EKEntityType) {
EKEntityTypeEvent,//日历
EKEntityTypeReminder //备忘
EKAuthorizationStatus EKstatus = [EKEventStore &authorizationStatusForEntityType:EKEntityTypeEvent];
switch (EKstatus) {
case EKAuthorizationStatusAuthorized:
& &NSLog(@"Authorized");
case EKAuthorizationStatusDenied:
& &NSLog(@"Denied'");
case EKAuthorizationStatusNotDetermined:
& &NSLog(@"not Determined");
case EKAuthorizationStatusRestricted:
& &NSLog(@"Restricted");
获取日历或备忘录权限
EKEventStore *store = [[EKEventStore alloc]init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
& &NSLog(@"Authorized");
& &NSLog(@"Denied or Restricted");
素有获取权限的方法,多用于用户第一次操作应用,iOS 8.0之后,将这些设置都整合在一起,并且可以开启或关闭相应的权限。所有的权限都可以通过下面的方法打开:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
上述的权限多为经常用到的权限,当然不会很全面,大家如有需要其他的权限,可以在下方评论,我会及时加上去的。&
希望这篇文章能够给大家的开发工作带来一些便利。
项目组件化,顾名思义,就是将项目中的各个模块按照基础组建,功能组件,业务组件划分成一个个单独的模块,以使得各个模块间可以单独开发、测试、组合运行。
在iOS开发过程中,MVC的使用可谓是众所周知,作为iOS开发人员也都经常使用这个模式。在MVC下,所有的对象都被归类成一个Model、一个View、一个Controller。
iOS系统的UITableView自带了索引功能,但是实现的功能比较简单,仅仅支持,滑动索引视图来达到快速滑动UITableView的功能。
iOS开发入门教程之APP开发
Copyright (C)
Tedu.cn All Rights Reserved 京ICP备号-56 版权所有
选择城市和中心
达内北京亦庄大学生实训基地
达内北京网络营销中心
达内北京会计中心iOS开发中的这些权限,你搞懂了吗? - 简书
iOS开发中的这些权限,你搞懂了吗?
懵懂也是一种美
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;
那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;4.在展示系统权限的对话框前,先向用户显示自定义的对话框,若用户选择不允许,默认无操作,若用户选择允许,再展示系统对话框。
上述情况在开发过程中是经常遇到的,不同方式的选择会影响最后用户交互体验。这一点感悟正是源于上一周工作遇到的问题:适配iOS10,如何获取应用联网权限用以管理系统对话框的显示管理。当我把这个问题解决后,感觉有必要将常用的iOS系统权限做一个总结,以便后用。
相机、麦克风权限
通讯录权限
日历、备忘录权限
引入头文件 @import CoreT
应用启动后,检测应用中是否有联网权限
CTCellularData *cellularData = [[CTCellularData alloc]init];
cellularData.cellularDataRestrictionDidUpdateNotifier =
^(CTCellularDataRestrictedState state){
//获取联网状态
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
查询应用是否有联网功能
CTCellularData *cellularData = [[CTCellularData alloc]init];
CTCellularDataRestrictedState state = cellularData.restrictedS
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
相册权限--iOS 9.0之前
导入头文件@import AssetsL
检查是否有相册权限
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch (status) {
case ALAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case ALAuthorizationStatusDenied:
NSLog(@"Denied");
case ALAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case ALAuthorizationStatusRestricted:
NSLog(@"Restricted");
相册权限--iOS 8.0之后
导入头文件@import P
检查是否有相册权限
PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
switch (photoAuthorStatus) {
case PHAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case PHAuthorizationStatusDenied:
NSLog(@"Denied");
case PHAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case PHAuthorizationStatusRestricted:
NSLog(@"Restricted");
![Uploading aca7ba38c5f8c0_695906.png . . .]获取相册权限
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
相机和麦克风权限
导入头文件@import AVF
检查是否有相机或麦克风权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//相机权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];//麦克风权限
switch (AVstatus) {
case AVAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case AVAuthorizationStatusDenied:
NSLog(@"Denied");
case AVAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case AVAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取相机或麦克风权限
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {//相机权限
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {//麦克风权限
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
导入头文件@import CoreL
由于iOS8.0之后定位方法的改变,需要在info.plist中进行配置;
检查是否有定位权限
BOOL isLocation = [CLLocationManager locationServicesEnabled];
if (!isLocation) {
NSLog(@"not turn on the location");
CLAuthorizationStatus CLstatus = [CLLocationManager authorizationStatus];
switch (CLstatus) {
case kCLAuthorizationStatusAuthorizedAlways:
NSLog(@"Always Authorized");
case kCLAuthorizationStatusAuthorizedWhenInUse:
NSLog(@"AuthorizedWhenInUse");
case kCLAuthorizationStatusDenied:
NSLog(@"Denied");
case kCLAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case kCLAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取定位权限
CLLocationManager *manager = [[CLLocationManager alloc] init];
[manager requestAlwaysAuthorization];//一直获取定位信息
[manager requestWhenInUseAuthorization];//使用的时候获取定位信息
在代理方法中查看权限是否改变
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
switch (status) {
case kCLAuthorizationStatusAuthorizedAlways:
NSLog(@"Always Authorized");
case kCLAuthorizationStatusAuthorizedWhenInUse:
NSLog(@"AuthorizedWhenInUse");
case kCLAuthorizationStatusDenied:
NSLog(@"Denied");
case kCLAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case kCLAuthorizationStatusRestricted:
NSLog(@"Restricted");
检查是否有通讯权限
UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
switch (settings.types) {
case UIUserNotificationTypeNone:
NSLog(@"None");
case UIUserNotificationTypeAlert:
NSLog(@"Alert Notification");
case UIUserNotificationTypeBadge:
NSLog(@"Badge Notification");
case UIUserNotificationTypeSound:
NSLog(@"sound Notification'");
获取推送权限
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
通讯录权限
iOS9.0之前
导入头文件 @import AddressB
检查是否有通讯录权限
ABAuthorizationStatus ABstatus = ABAddressBookGetAuthorizationStatus();
switch (ABstatus) {
case kABAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case kABAuthorizationStatusDenied:
NSLog(@"Denied'");
case kABAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case kABAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取通讯录权限
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"Authorized");
CFRelease(addressBook);
NSLog(@"Denied or Restricted");
iOS9.0及以后
导入头文件 @import C
检查是否有通讯录权限
CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
switch (status) {
case CNAuthorizationStatusAuthorized:
NSLog(@"Authorized:");
case CNAuthorizationStatusDenied:{
NSLog(@"Denied");
case CNAuthorizationStatusRestricted:{
NSLog(@"Restricted");
case CNAuthorizationStatusNotDetermined:{
NSLog(@"NotDetermined");
获取通讯录权限
CNContactStore *contactStore = [[CNContactStore alloc] init];
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
日历、备忘录权限
导入头文件
检查是否有日历或者备忘录权限
typedef NS_ENUM(NSUInteger, EKEntityType) {
EKEntityTypeEvent,//日历
EKEntityTypeReminder //备忘
EKAuthorizationStatus EKstatus = [EKEventStore
authorizationStatusForEntityType:EKEntityTypeEvent];
switch (EKstatus) {
case EKAuthorizationStatusAuthorized:
NSLog(@"Authorized");
case EKAuthorizationStatusDenied:
NSLog(@"Denied'");
case EKAuthorizationStatusNotDetermined:
NSLog(@"not Determined");
case EKAuthorizationStatusRestricted:
NSLog(@"Restricted");
获取日历或备忘录权限
EKEventStore *store = [[EKEventStore alloc]init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Authorized");
NSLog(@"Denied or Restricted");
素有获取权限的方法,多用于用户第一次操作应用,iOS 8.0之后,将这些设置都整合在一起,并且可以开启或关闭相应的权限。所有的权限都可以通过下面的方法打开:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
上述的权限多为经常用到的权限,当然不会很全面,大家如有需要其他的权限,可以在下方评论,我会及时加上去的。
希望这篇文章能够给大家的开发带来一些便利。
欢迎关注微信公众号ID:iOSDevSkills,或者搜索&攻城狮的动态&,更多精彩技术文章,期待您的加入!一起讨论,一起成长!
更新记录:添加iOS9.0以后访问通讯录权限;
IT狗,矫情人
微博:@Jack_Lin_IOS
微信公众号:攻城狮的动态(iOSDevSkills)
觉得为时已晚的时候恰恰是最早的时候!
写在前面 APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事; 那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再...
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事; 那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求...
:APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事; 那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请...
前言 上篇文章iOS开发中的这些权限,你搞懂了吗?介绍了一些常用权限的获取和请求方法,知道这些方法的使用基本上可以搞定大部分应用的权限访问的需求。但是,这些方法并不全面,不能涵盖住所有权限访问的方法。 So,笔者在介绍一下剩下的几种权限的访问方法和一些使用上的注意事项,希望...
联网权限 #import &CoreTelephony/CTCarrier.h& #import &CoreTelephony/CTCellularData.h& 应用启动后,检测应用中是否有联网权限 CTCellularData *cellularData = [[CTC...
不断革新的今天,保健养生也在不断研发创新出新的方法,更符合年轻人的口味。今天向各位女性朋友推荐的就是适合冬季保健的养生茶配方,7款冬季养生茶配方,从内调节需要保养的身体,是女性保健美容必不可少的日常茶饮。下面就跟着小编一起来了解下为你推荐的冬季养生茶配方。 一、活血补身养生...
我是个孩子,可又不愿只做一个孩子。
那些年说变就变的大人,我们最初一直都相信他们所说过的每一句话,但好像这些话也只有我们记下啦。
记得爸爸妈妈曾在你完成某个目标后对你许下一起游玩的誓言,最后却以你眸中的失望落场……
又或是他们说的那些一...
尚齐猎,谐音“上齐呢”--上齐猎,崇(尚)(猎头)一起(齐)行动(猎),为提升招聘行业效率、改善用户招聘及求职体验而工作。 一、尚齐猎使命 成就猎头、成就中产阶级。 二、尚齐猎愿景 每一个猎头公司,都在尚齐猎平台上拥有自己的猎头招聘网、拥有自己的人才店铺 每一位优秀人选,都...
太阳透过小窗 带来沉甸甸的呼唤 桌上的灰尘斑斑点点 在温暖的光线中跳舞 曾经五颜六色的幻想 被现实涂抹了眼睛 爬满了密密的黑点 在迷失中忘记了归路 雪地是那样的洁白 可是阳光下的一片照耀 只看到了模糊的惨淡 圣洁的光环那么孤独 把阳光挡在窗外 残余之光 吞噬着骄傲和悲哀 阴...
锋利的双眼 虔诚的微笑 优美的动作 风风雨雨一路走来 好辛苦 无形的手 悄然滋生 收缩自如 穿梭于大街小巷 闹市更是把玩无厌 成功就在指间 瞬间掌中包罗万象 好努力 无形的手铸就了成功的漫长路 再辛苦 再努力 下个奋斗目标将更完美 伟大的标榜着一次次地成果 可换来的是世人的...

我要回帖

更多关于 麦克风权限 的文章

 

随机推荐