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

iOS 10 开发 相机相关的适配

升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列。

直入正题吧

今天在写 Swift 3 相关的一个项目小小练下手,发现调用相机,崩了。试试看调用相册,又特么崩了。然后看到控制台输出了以下信息:
This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

意思就是说,你需要在 info.plist 文件添加一个 NSPhotoLibraryUsageDescription的 key,然后添加一个描述。

解决方案
1.在项目中找到info.plist文件,右键点击以 Source Code形式打开
2.添加以下键值对,这里以 PhotoLibrary 作为例子

    <key>NSPhotoLibraryUsageDescription</key>
    <string>此 App 需要您的同意才能读取媒体资料库</string>

注意,key 是绝对不能写错的,

而 value 也就是<string></string>你可以随意写

附图


图片发自简书App

目测所有需要的权限描述都会在 iOS 10 beta里面crash,不用怕,控制台会有输出的,自行添加就 OK,我另外附送几个 key/value 给你们

    <key>NSCameraUsageDescription</key>    
    <string>cameraDesciption</string> <key>NSContactsUsageDescription</key> <string>contactsDesciption</string> <key>NSMicrophoneUsageDescription</key> <string>microphoneDesciption</string>

嗯,然后 clean 一下,重新运行。

当然我比较推荐的做法是直接
info.plist 还是用 Property List 的形式,然后点击添加, 就是滑动到最后一个 item 会出现一个小加号
输入 Privacy 可以迅速定位到这一权限系列,找到你需要的权限,修改后面的 value 就可以了



文/wzbdroid(简书作者)
原文链接:http://www.jianshu.com/p/c212cde86877
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
 
判断是否支持
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        NSLog(@"支持相机");
    }
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {
        NSLog(@"支持图库");
    }
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        NSLog(@"支持相片库");
    }

 

转载于:https://www.cnblogs.com/mkai/p/6244974.html

相关文章:

  • LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别
  • 2017阅读计划
  • svnserve+ssh服务器Apache+svn服务器创建
  • nginx proxy_pass代理小结
  • Charles抓取android设备http信息
  • 2016 年 Linux 领域的十大新闻,你有关注吗?
  • C#学习基础--静态构造函数
  • Hadoop 2.6.0 HA高可用集群配置详解
  • PHP Socket 编程过程详解
  • 强名称(3)强名称的脆弱性
  • 写代码的正确姿势
  • 从用户的视角看待网页设计(三)
  • 源码安装ncurses-devel
  • update-alternatives——linux软件版本管理命令
  • 自适应css和屏幕探测
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • C++11: atomic 头文件
  • CSS相对定位
  • Electron入门介绍
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • flask接收请求并推入栈
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JS字符串转数字方法总结
  • Nodejs和JavaWeb协助开发
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Wamp集成环境 添加PHP的新版本
  • 从setTimeout-setInterval看JS线程
  • 代理模式
  • 工作中总结前端开发流程--vue项目
  • 爬虫模拟登陆 SegmentFault
  • 容器服务kubernetes弹性伸缩高级用法
  • 使用Swoole加速Laravel(正式环境中)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 用 Swift 编写面向协议的视图
  • gunicorn工作原理
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 如何正确理解,内页权重高于首页?
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #pragma multi_compile #pragma shader_feature
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (function(){})()的分步解析
  • (ibm)Java 语言的 XPath API
  • (六)c52学习之旅-独立按键
  • (一)kafka实战——kafka源码编译启动
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 2.1路线图
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net mvc 获取url中controller和action
  • .NET 的程序集加载上下文
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET开源项目介绍及资源推荐:数据持久层
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国