在ios9系统中,定位服务的做法基本没有改变,对于前台的定位没有影响,但app中如果需要后台定位,那么还需要多做一些操作,例如:
通过上面简单的配置直接运行的话,程序会崩溃掉,还需要在plist文件中做一些配置,两种方式:
方式一:直接在plist文件中配置如下:
方式二:在项目中设置
打开background models选项,勾选其中的location updates。
我们知道,在xcode7后,开发者可以不用花99dollars去购买开发者账号而可以在自己的iphone上进行测试。在安装这些应用时,ios9系统不再向以前那样,再安装时提示一个信任的按钮,而是做如下的提示:
在设置中,选择描述文件:
之后选择开发者对应的appleid,选择信任即可:
bitcode是app的一种中间形式,在ios9系列专题的前几篇,有对其的简单介绍,举个例子,我们可以在提交app时提交app的bitcode形式,如此一来,apple会对我们的app进行二次优化,在用户下载时根据所需再进行编译打包。在xocde7中,新建的项目是默认开启bitcode的,如果我们用xcode7编译提交应用,这里有需要注意适配的地方。
如果要支持bitcode,需要保证所有的sdk都支持bitcode,如果要更新旧的sdk,只需要在xcode7上开启bitcode重新制作一遍即可。
如果不能使所有sdk都支持bitcode,可以在项目中关闭bitcode,在building setting中搜索bitcode,将enable设置为no,如下:
在ios9中,apple引入了白名单这个概念,其好处是对app应用内安全进行了加强。在ios9的适配中,如果我们用到canopenurl这样的方法,则需要配置白名单。
首先,我们创建一个测试工程,什么都不用做,只需要添加一个url scheme:
在另一个工程中,我们写如下代码:
在没有配置白名单之前,打印如下:
可以看到,bool值返回的是no。虽然这样也可以跳转相应的app,但是canopenurl这个方法相当于失效了,我们不能用它来判断用户到底装没装这个app。
适配时,我们在plist文件中添加如下键值:
这时再次运行程序,canopenurl的判断就会准确了。
注意:白名单添加上限为50个。
ios9的另一变化是label的默认字体产生了变化,我们打印ios9中label的字体如下:
ios8中的label默认字体如下:
这两种字体的最大差异是字间距不同,例如如下一段代码:
这段代码在ios9上是刚好可以正常显示的,在ios8上则不行,如下:
ios9:
ios8:
适配注意点:
1、可以通过动态计算来获取label的宽度,进行设置label的宽度
2、一个更简单的方法是通过设置一个确定的字体,来进行适配