奋斗的七月

最近在做一个环信即时聊天的项目,突然发现了一个问题,在进行聊天时候,选择图片,居然没有询问用户,直接可以访问相册,当选择了一张图片的时候,这时候才会弹出询问用户的提示框。

这个问题纠结我好久!!!最后发现iOS11,访问相册权限发生了重大变更:

一、 iOS11之前:访问相册和存储照片到相册(读写权限),需要用户授权,需要添加NSPhotoLibraryUsageDescription。

二、iOS11之后:默认开启访问相册权限(读权限),无需用户授权,无需添加NSPhotoLibraryUsageDescription,适配iOS11之前的还是需要加的。

添加图片到相册(写权限),需要用户授权,需要添加NSPhotoLibraryAddUsageDescription。

也就是说,ios11之后的系统,可以不需要进行询问用户,就可以直接访问相册。

但是这就出现了一个问题,可以不需要进行询问用户,但是选择图片之后,系统又会询问是否允许询问相册权限。这样又得用户还是不习惯这样的操作流程,还是希望当进入相册的时候,就询问用户,所以就需要代码进行控制弹框的顺序。

相册访问权限

在xcode8.0之前可以用ALAuthorizationStatus进行判断相册权限,在8.0系统以后,新加入了Photos.framework框架,我们可以利用框架中的PHAuthorizationStatus进行权限状态判断。

如何使用

#import

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];

if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied)

{

// 无权限

// do something...

}

各个状态的解释

typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {

PHAuthorizationStatusNotDetermined = 0, // User has not yet made a choice with regards to this application

PHAuthorizationStatusRestricted, // This application is not authorized to access photo data.

// The user cannot change this application’s status, possibly due to active restrictions

// such as parental controls being in place.

PHAuthorizationStatusDenied, // User has explicitly denied this application access to photos data.

PHAuthorizationStatusAuthorized // User has authorized this application to access photos data.

} NS_AVAILABLE_IOS(8_0);

以下是我项目中进行代码的代码判断,当第一次选择不允许的时候,第二次没有权限的时候,给一个优化的提示语:

//----第一次不会进来

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];

if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied){

// 无权限 做一个友好的提示

UIAlertView * alart = [[UIAlertView alloc]initWithTitle:@"温馨提示" message:@"请您设置允许该应用访问您的相机\n设置>隐私>相机" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

[alart show];

return;

}

//----每次都会走进来

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

if (status == PHAuthorizationStatusAuthorized) {

NSLog(@"Authorized");

}else{

NSLog(@"Denied or Restricted");

//----为什么没有在这个里面进行权限判断,因为会项目会蹦。。。

}

}];

相机访问权限

如何使用

#import

#import

AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied)

{

// 无权限

// do something...

}

各个状态的解释

typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {

// 表明用户尚未选择关于客户端是否可以访问硬件

AVAuthorizationStatusNotDetermined = 0,

// 客户端未被授权访问硬件的媒体类型。用户不能改变客户机的状态,可能由于活跃的限制,如家长控制

AVAuthorizationStatusRestricted,

// 明确拒绝用户访问硬件支持的媒体类型的客户

AVAuthorizationStatusDenied,

// 客户端授权访问硬件支持的媒体类型

AVAuthorizationStatusAuthorized

} NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;

/*!

@enum AVAuthorizationStatus

@abstract

Constants indicating the client's authorization to the underlying hardware supporting a media type.

@constant AVAuthorizationStatusNotDetermined

Indicates that the user has not yet made a choice regarding whether the client can access the hardware.

@constant AVAuthorizationStatusRestricted

The client is not authorized to access the hardware for the media type. The user cannot change

the client's status, possibly due to active restrictions such as parental controls being in place.

@constant AVAuthorizationStatusDenied

The user explicitly denied access to the hardware supporting a media type for the client.

@constant AVAuthorizationStatusAuthorized

The client is authorized to access the hardware supporting a media type.

*/

苹果11相机权限开启不了_iOS11 访问相册、相机权限,居然变化了,巨坑啊........相关推荐

  1. 苹果手机中计算机功能是什么,如何将苹果11手机中的内容和隐私访问限制功能关闭...

    如何将苹果11手机中的内容和隐私访问限制功能关闭 腾讯视频/爱奇艺/优酷/外卖 充值4折起 如何将苹果11手机中的内容和隐私访问限制功能关闭呢?一起看看具体操作步骤吧. 1. 解锁手机后,找到设置图标 ...

  2. android 权限开启回调,Android M请求onSurfaceTextureAvailable回调权限不在活动

    症状:首次启动我的应用程序崩溃java.lang.SecurityException: Lacking privileges to access camera service.我收到了"不幸 ...

  3. 云服务器共享文件如何访问权限,怎么设置共享文件夹访问权限?

    对于办公室一族来说,共享文件夹是一件普通又正常的事情,为了对共享文件的使用进行有效的管理,防止越权访问共享文件的行为,尤其是防止随意修改共享文件.随意删除共享文件以及随意复制共享文件的行为,我们通常需 ...

  4. 手机照片局部放大镜_苹果11相机设置哪个最清晰 iphone11放大镜怎么打开

    苹果iphone11虽然是苹果公司去年发布的一款手机,但目前仍然有很高的热度.而苹果11相机只能支持5倍的变焦,有很多小伙伴反应用iphone11拍照不清晰,这其实跟设置也有关系.那么,苹果11相机设 ...

  5. ios 请在设置中打开相机权限_开启运动与健身权限 iOS10相机相册等权限的使用、检测并引导用户开启权限 - 非主流娱乐网...

    开启运动与健身权限 iOS10相机相册等权限的使用.检测并引导用户开启权限 2019-04-09 01:01:34 来源: 非主流娱乐网责任编辑:小s0条评论 NSPhotoLibraryUsageD ...

  6. 苹果11怎么录屏_苹果11怎么设置骚扰电话号码

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 系统版本为,苹果11设置拦截骚扰电话的方法如下: 1.首先打开手机设置,找到[勿扰模式]: 2.将勿扰模式开启后,点击下方[允许以 ...

  7. 美团工程师回应“频繁定位”:常用App权限开启时检测结果基本一致

    10月11日消息,日前,有数码博主爆料,称在升级iOS 15后,安装某隐私记录软件之后发现,美团在后台连续24小时进行了定位.而前一天,在同样的路径下,有网友发现微信在后台多次读取用户相册. 美团Ap ...

  8. 苹果11蓝牙配对不成功怎么办_为啥苹果11连不上蓝牙耳机

    以系统版本iOS13.6.1的苹果11为例子,连不上无线蓝牙耳机的缘故以下: 1.确定无线设备是不是有启动: 2.确定无线设备是不是用电量充足: 3.确定iOS机器设备上的设定的蓝牙功能内,是不是有将 ...

  9. 摄像头取景框_苹果11的「超取景框拍摄照片」,很多人都不知道怎么用

    苹果为 2019 年发布的 iPhone 11 机型都配备了超广角镜头,因此也为用户带来了不一样的拍照体验.也正是因为有了超广角镜头,所以在拍照时就多了一个「超取景框拍摄照片」功能.很多朋友可能不知道 ...

  10. 苹果春季发布会已开启直播;滴滴回应网约车司机被害​;微软Chromium内核浏览器曝光 | 极客头条...

    「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 快讯速知 滴 ...

最新文章

  1. Java项目:角色权限后台脚手架系统(java+Springboot+Maven+myBaits-Plus+Vue+Element-UI+Mysql)
  2. 20160115广州MVP线下聚会
  3. asp.net 调用vc dll_“双通道”独立通讯,稀有钛膜单元,击音运动果VC真无线耳机...
  4. 视频防抖 Opencv
  5. 【模拟】【贪心】POJ2709Painter
  6. 3.2 为超参数选择合适的范围-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  7. Apache Velocity官方指南-资源
  8. 信用更正和贷方剩余数量
  9. pytorch报错: invalid argument 0: Sizes of tensors must match except in dimension 0.
  10. MySQL 聚类合并算法_聚类算法-近邻聚类算法
  11. Android重新分区parted,分区工具parted的详解及常用分区使用方法【转】
  12. 导出vm镜像_openstack虚拟机导出镜像
  13. 计算机专业博士阶段研究方向,国内计算机专业博士研究方向
  14. 【1字=16bits的原因,switch汇编详解,跳到中间 jump to middle,guarded-do门卫】
  15. c语言考试的说说带图片致自己,励志说说带图片致自己
  16. 5G手机开打价格战,4G手机将被加速淘汰
  17. This Apple ID has not yet been used in the ITunes Store/此Apple ID尚未在iTunes Store使用过
  18. 洛谷P1458 [USACO2.1]顺序的分数 Ordered Fractions
  19. java和scala代码可以混合编写吗_IDEA实现Java与Scala代码混合开发
  20. 蓝桥 百亿富翁 stack<Type> 栈

热门文章

  1. 自学是一门手艺_错误报告是一门科学
  2. 怎么将pdf转换成jpg图片格式
  3. 最全CAD快捷键命令大全(图文版、文字版、键盘版)
  4. java架构师职责_架构师的主要职责
  5. java开发聚合支付系统源码可支撑百万级并发
  6. python随机分组的思路_一个关于随机分组需求的Python方案与思考
  7. 神经网络测试样本的选择,如何测试神经网络模型
  8. elementui自定义手机号邮箱验证
  9. 2019腾讯广告算法大赛之清洗广告数据集和用户数据集
  10. Linux下用rm删除的文件的恢复方法