iOS 10 由于权限问题导致崩溃的那些坑

 

iOS开发------iOS 10 由于权限问题导致崩溃的那些坑 


6月份的WWDC大会结束有一段时间了,相信很多开发者也是在努力工作的闲时用着Xcode8 Beta版学习着新的特性吧。

使用Xcode8写自己的东西有一段时间了,在使用Xcode8编程时不得不说我特别喜欢改后的默认字体,哈哈,当然默认字体是可以调回去的,只不过默认的字体感觉看起来比以前舒服了,毕竟不会像之前那么”字正腔圆”了。

步入正题吧,不然慢慢的就会成为话唠了。凡事总会有个导火线吧,想记录权限问题的起因: 
今天在继续优化之前写的图片多选小demo的时候无意用Xcode8 Beta3打开了(用过的小伙伴应该知道,点击项目文件的话默认就是用Xcode8来打开的吧),在调用发生了崩溃现象,一开始以为是巧合,但尝试了第二次之后,似乎意识到确实出了问题,从而关注控制台(为什么之前没有看,是因为Beta版不管有没有出现错误都会打印一堆的东西,索性就不看了),这个时候就注意到了这句Xcode给我们的忠告:

<code class="language-Ruby hljs applescript has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">[access] 
This app has crashed because <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">it</span> attempted <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> access privacy-sensitive data <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">without</span> a usage description.  
The app's Info.plist must <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">contain</span> an NSPhotoLibraryUsageDescription key <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> a <span class="hljs-type" style="box-sizing: border-box;">string</span> value explaining <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> user how <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> app uses this data.</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

不难翻译,大体意思就是这个App缺少一个获取私有(敏感)数据的权限描述,需要我们在info.plist文件中必须含有一个名字叫做NSPhotoLibraryUsageDescription的值来解释为什么应用需要使用这个数据,没错,获取相册资源的键值就是NSPhotoLibraryUsageDescription 

感觉它”友好”的提示之后,就去plist文件中添加了下面的键值: 


这个时候再点击获取图片资源,就弹出了一个获取权限的问候,不会发生崩溃了:


通过类似事情,说明iOS10对用户的隐私又做了进一步加强,就好像当初iOS8对定位隐私进行加强一样,作为开发者的我们貌似也是应该时刻保持这种对新知识警觉性的。 

除了相册的权限,iOS10之后如下的权限请求也是需要我们填写请求描述的,在这里也给大家提醒一下:

<code class="hljs cs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">Privacy - Microphone Usage Description <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//麦克风权限</span>
Privacy - Contacts Usage Description   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//通讯录权限</span>
Privacy - Camera Usage Description     <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//摄像头权限</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li></li></ul>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值