iOS 中plist文件中配置key值冲突的现象
iOS开发一些特殊的软件需要在项目中配置对应的key值,然而近期在项目中发现一个有意思的现象,苹果官方文档中提供的key值很多,但其实有一些彼此可能有冲突,当你同时配置了彼此冲突的key值,可能会出现一些奇葩的现象,而且不容易发现问题所在,下面我就我遇到的情况和大家分享一下:
因为项目需要,需要配置定位相关的key值,同时需要后台长时间运行,所以在应用中我配置了NSLocationWhenInUseUsageDescription这个定位的key值,为了在使用时获取用户的位置信息;同时我用申请了Required background modes后台运行的key,这样当我在获取用户位置的时候,把应用切换到后台,结果手机屏幕上方出现"蓝条提示"。开始我一直以为是代码除了问题,但是最终发现是plist文件中的配置出了问题。
大家可以这样想一下:NSLocationWhenInUseUsageDescription这个key值是获取用户的位置信息,并不支持位置监控,而支持位置监控的key是NSLocationAlwaysUsageDescription;如果你开发地图导航类的软件,因为需要不断更新监视用户的位置变化,你需要使用NSLocationAlwaysUsageDescription,而且可以支持后台使用。那么你使用后台模式加上NSLocationWhenInUseUsageDescription,如果可行是不是就相当于NSLocationAlwaysUsageDescription的效果,当然苹果已经考虑到了这种情况,所以就有了上面的提示用户的信息(可以看出苹果对安全,权限方面还是很严谨的)。之后我尝试,使用NSLocationAlwaysUsageDescription来获取位置信息,就没有了以上的提示信息,所以苹果只是不会让你自己创建一个“莫须有”key的。。。
iOS 中plist文件中配置key值冲突的现象的更多相关文章
- ios开发之Info.plist文件相关配置
前言:在iOS开发中有些情况下需要对Info.plist文件进行配置,以下介绍几种相关配置.以后遇到需要配置的再更新... 开发环境:swift3.0.1,Xcode8.1 一,项目中需要使用第三方字 ...
- java中常量文件的配置与读取
java中常量文件的配置与读取: package com.floor.shop.user.util; import java.io.InputStream; import java.io.InputS ...
- 写入数据到Plist文件中时,第一次要创建一个空的数组,否则写入文件失败
#pragma mark - 保存数据到本地Plist文件中 - (void)saveValidateCountWithDate:(NSString *)date count:(NSString *) ...
- 获取保存在沙盒中plist文件的用户的字典信息
获取保存在沙盒中plist文件的用户的字典信息
- rpm 系 linux 系统中 repo 文件中的 $release 到底等于多少?
rpm 系 linux 系统中 repo 文件中的 $release 到底等于多少? 结论 对于 8 来说,通过以下命令 #/usr/libexec/platform-python -c 'impor ...
- iOS开发读取plist文件、iphone中plist文件的
在Xcode中建立一个iOS项目后,会自己产生一个.plist文件,点击时会看见它显示的是类似于excel表格: 但是,如果打开方式选择Source Code,你会看见它其实是一个xml文件. 我们会 ...
- django开发过程中静态文件路径配置
在demo项目的settings.py文件中找到 STATICFILES_DIRS STATICFILES_DIRS = ( 'static', #这个名字是项目根目录下的文件夹名称,注意后面有逗号 ...
- Js中获取对象的所有key值
假如现在有一个对象 var obj = { A:2 ,B:"Ray" ,C:true ,D:function(){} } 如果想遍历对象obj中的所有键值,一般是用以下方式 for ...
- 把txt文件中的json字符串写到plist文件中
- (void)json2Plist { NSString *filePath = [self applicationDocumentsDirectoryFileName:@"json&qu ...
随机推荐
- 加壳学习笔记(三)-简单的脱壳思路&调试思路
首先一些windows的经常使用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTe ...
- 关于Android中的四大组件(Service的开启与关闭)
前言 服务(Service)是Android系统中的四大组件之中的一个.服务主要用于两个目的:后台执行和跨进程訪问. 通过启动 一个服务.能够在不显示界面的前提下在后台执行指定的任务,这样能够不影响用 ...
- C 基础 全局变量
/** 被static修饰的局部变量 1.只有一份内存, 只会初始化一次 2.生命周期会持续到程序结束 3.static改变了局部变量的生命周期, 但是不能改变局部变量的作用域 被static修饰的全 ...
- Linux下的应用程序开机自启动
Linux下的应用程序开机自启动,目前我知道的有2种: 1.将启动语句写到/etc/rc.local 2.在init.d放置启动脚本 第一种,很简单,直接写进去就行,比如说: /db/mongodb/ ...
- Api基类
基类 class BaseController extends Controller{ public $outData = ['code'=>0,'msg'=>'ok']; public ...
- [luogu_U15116]珈百璃堕落的开始
https://www.zybuluo.com/ysner/note/1239458 题面 给定\(n\)个二元组\((x,y)\),问有多少种方案,使得选出其中几个后,\(\sum x=\sum y ...
- Scala 方法接受变参
def Parametron(strings:String*): Unit ={ strings.foreach(x=>{ println(x) ") println(s"* ...
- Django-CKeditor使用笔记
1. 安装django-ckeditor $ pip install django-ckeditor 2. 在setting中,添加ckeditor , ckeditor_uploader 到INST ...
- Road Construction(无向图的双连通分量)
http://poj.org/problem?id=3352 题意:给出一个有n个顶点m条边的无向连通图,问至少添加几条边,使删除任意一条边原图仍连通. 思路:一个边双连通图删除任意一条边仍为连通图. ...
- C#中Random
说明:C#中的随机数是一个伪随机数,随机数字从一组有限的数字选择以相同的概率,所选的数字不是完全随机的,因为使用数学算法来选择它们.在大多数Windows系统中,Random的15毫秒内创建的对象很可 ...