当前位置: 首页 > news >正文

iOS10判断摄像机是否可用

自言自语:(最近想买一直比较忙,都很少有时间写点东西和大家分享,要坚持写点东西啊!)

iOS10以后增加了权限的管理,更注重用户的隐私

我们在开发的时候避免不了会调用用户的相机或者相册,在iOS10以后就需要在info.plist文件里添加这两个key Privacy - Camera Usage DescriptionPrivacy - Photo Library Usage Description 分别对应:相机权限相册权限,具体的key查看这篇文章ios10要添加的key 虽然添加了这个key用户在使用我们app的时候,当初次使用到相机的时候,如果用户不允许,那么下次在使用的时候就不会在提示,如果你不做判断还继续使用你的相机,很有可能造成崩溃的bug(别觉得我说的很严重,我做的二维码扫描就遇到这样的问题了)

废话不多说,上代码

在需要掉摄像头的地方

  /// 先判断摄像头硬件是否好用
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
    /// 用户是否允许摄像头使用
    NSString * mediaType = AVMediaTypeVideo;
    AVAuthorizationStatus  authorizationStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
  /// 不允许弹出提示框
    if (authorizationStatus == AVAuthorizationStatusRestricted|| authorizationStatus == AVAuthorizationStatusDenied) {
        
        UIAlertController * alertC = [UIAlertController alertControllerWithTitle:@"摄像头访问受限" message:nil preferredStyle:UIAlertControllerStyleAlert];
        [self presentViewController:alertC animated:YES completion:nil];
        UIAlertAction * action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
            [self dismissViewControllerAnimated:YES completion:nil];
        }];
        [alertC addAction:action];
    }else{
  这里是摄像头可以使用的处理逻辑
}   
} else {
  /// 硬件问题提示
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"手机摄像头设备损坏" message:@"" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
    
    [alertView show];
}
复制代码

相关文章:

  • Android类似微信图片选择器
  • 使用MaxCompute搭建社交好友推荐系统
  • C 标准库 - stdio.h
  • [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列
  • linux学习笔记四
  • 如何优雅地为Struts2的action加监控日志
  • Oracle12C_____处理数据库01033连接错误问题.sql
  • Mac 10.12安装远程桌面工具TeamViewer
  • NGUI_Toggle
  • dubbo源码—dubbo简介
  • 浏览器缓存机制分析
  • centos7部署redis
  • Code First开发系列之领域建模和管理实体关系
  • ImageMagick 打水印支持透明度设置
  • 吴颖二:12.19 年关将在翻仓已“迫不及待”你准备好了吗
  • ----------
  • chrome扩展demo1-小时钟
  • CSS实用技巧干货
  • C语言笔记(第一章:C语言编程)
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • node入门
  • SQLServer插入数据
  • vue数据传递--我有特殊的实现技巧
  • 从零开始学习部署
  • 计算机常识 - 收藏集 - 掘金
  • 力扣(LeetCode)56
  • 利用DataURL技术在网页上显示图片
  • 前端代码风格自动化系列(二)之Commitlint
  • 前嗅ForeSpider中数据浏览界面介绍
  • 前言-如何学习区块链
  • 区块链分支循环
  • 入口文件开始,分析Vue源码实现
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 世界上最简单的无等待算法(getAndIncrement)
  • 微服务入门【系列视频课程】
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 赢得Docker挑战最佳实践
  • 原生 js 实现移动端 Touch 滑动反弹
  • FaaS 的简单实践
  • $.ajax,axios,fetch三种ajax请求的区别
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (篇九)MySQL常用内置函数
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET 读取 JSON格式的数据
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .net连接oracle数据库
  • .NET正则基础之——正则委托
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ C++ ] STL---string类的模拟实现
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗