开发者社区> ihtcboy> 正文

iOS 8相机授权判断

简介: 最近在做自定义相机,然后就是iOS8要授权才能使用,如果用户拒绝,那么,就不能操作。 问题是,怎么知道用户第一次选择相机,并且应用有打开相机的权限? // 在iOS7 时,只有部分地区要求授权才能打开相机 if (floor(NSFoundationV...
+关注继续查看

最近在做自定义相机,然后就是iOS8要授权才能使用,如果用户拒绝,那么,就不能操作。

问题是,怎么知道用户第一次选择相机,并且应用有打开相机的权限?

// 在iOS7 时,只有部分地区要求授权才能打开相机
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
        // Pre iOS 8 -- No camera auth required.
            
 }else {
        // iOS 8 后,全部都要授权
        
        // Thanks: http://stackoverflow.com/a/24684021/2611971
        
        AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        switch (status) {
            case AVAuthorizationStatusNotDetermined:{
                // 许可对话没有出现,发起授权许可
   
                [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                   
                    if (granted) {
                        //第一次用户接受
                    }else{
                         //用户拒绝
                    }
                }];
                break;
            }
            case AVAuthorizationStatusAuthorized:{
                // 已经开启授权,可继续
               
                break;
            }
            case AVAuthorizationStatusDenied:
            case AVAuthorizationStatusRestricted:
                // 用户明确地拒绝授权,或者相机设备无法访问
                
                break;
            default:
                break;
        }
        
    }

最后一个坑:

没有解决:
而问题的关键是,在第一次授权时,弹出的AlertView,其实,应用已经在后台了。当用户选择其中一个时,会从新回到前台,导致第一次时,如果要打开相机,会非常的慢,暂时还不知道这个问题怎么解决?欢迎在讨论区,谢谢大家!

补充:2015.7.26

发现其它相机应用,刚打开时,就询问打授权,可能这就是目前比较好的解决方案?

  • 如果有什么疑问,可以在评论区一起讨论;
  • 如果有什么不正确的地方,欢迎指导!


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
20933 0
Confluence 6 数据库表-授权(Authentication)
下面的表格对用户授权有关的信息进行存储,这部分是通过嵌入到 Confluence 中的  Atlassian Crowd 框架实现的。
757 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
30329 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
21304 0
日志服务(原SLS)新功能发布(12)--日志投递ODPS支持自动建表授权
背景 日志服务支持“日志消费”,“日志索引”和“日志投递”三种消费模式,“日志消费”功能默认支持,支持日志数据上传到服务端3秒内进行实时消费,并且支持保留48小时,“日志索引功能”支持30秒内进行查询,并且在创建时支持保存7天/30天/90天,“日志投递”能够在分钟级别将数据投递至OSS或者Max
2871 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23637 0
+关注
ihtcboy
iHTCboy 破得迷,了得知,方能学海无边; 热爱移动开发,目前致力于移动全栈开发
119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载