第三十一篇、iOS 9版本适配

1.网络适配(强制回退HTTP)

  为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求统一采用TLS 1.2 协议。因为 AFNetworking 现在的版本底层使用了 NSURLConnection ,众多App将被影响(基于iOS8.x-SDK的App不受影响)。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。而这一做法,官方文档称为ATS,全称为App Transport Security,是iOS9的一个新特性。

2.后台定位

 // 1. 实例化定位管理器
_locationManager = [[CLLocationManager alloc] init];
// 2. 设置代理
_locationManager.delegate = self;
// 3. 定位精度
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
// 4.请求用户权限:分为:①只在前台开启定位②在后台也可定位,
//注意:建议只请求①和②中的一个,如果两个权限都需要,只请求?即可,
//①②这样的顺序,将导致bug:第一次启动程序后,系统将只请求①的权限,②的权限系统不会请求,只会在下一次启动应用时请求?
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
    //[_locationManager requestWhenInUseAuthorization];//?只在前台开启定位
    [_locationManager requestAlwaysAuthorization];//?在后台也可定位
}
// 5.iOS9新特性:将允许出现这种场景:同一app中多个location manager:一些只能在前台定位,另一些可在后台定位(并可随时禁止其后台定位)。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
    _locationManager.allowsBackgroundLocationUpdates = YES;
}
// 6. 更新用户位置
[_locationManager startUpdatingLocation];

3.企业级分发(如果不信任证书,应用不可以使用,注意:服务器上的Bundle id 要设置和项目中的一样,不然不可以下载)

4.添加信任的白名单(不信任则第三方的分享不可以使用)

5.字体间隙变大UI异常(在ios8显示完全,当时一到ios9中就显示不全)

CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
时间: 2024-11-08 21:16:35

第三十一篇、iOS 9版本适配的相关文章

iOS 开发——版本适配OC篇&项目开发之系统适配问题(关于后台)

项目开发之系统适配问题 关于后台 在之前iOS 开发中,我们精彩遇到关于app适配问题,有屏幕适配,系统适配,但是由于苹果新设备(iphone 6/6p)技新术(sizeClass)的推出在屏幕适配上变的非常简单,而且之前关于app在系统适配上还是比较多的,可能是由于ios7的大改革,后面字啊iOS7盒iOS8上面的api并没有太大的差别,所以关于系统适配,我们并没有考虑太多. 但是,作为一个合格的开发者,不管是实际项目开发中,还是平时我们都要注意系统的视频,毕竟ios9又出来了,虽然常用api

iOS 10 版本适配问题收集-b

随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使用下面的方法: #define isiOS10 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=10) 它会永远返回NO,substringToIndex:1在iOS 10 会被检测成 iOS 1了

iOS不同版本适配问题(#ifdef __IPHONE_7_0)

部分参考http://www.cnblogs.com/ios8/p/ios-version-com.html 下面举个简单的例子来说明在iOS7.0和iOS6.1(以及更低版本)之间的适配问题(用的是xcode5.0,里边有6.1和7.0两个版本的sdk) 新建一个工程,默认的development target,base sdk以及模拟器的版本都是7.0,在AppDelegate中的didFinishLaunchingWithOptions方法里写下 self.window.tintColor

mysql 第三十一篇文章~jvm的知识与优化

一 简介: 今天咱们聊聊 jvm内存调优二 基础理论:   1 jvm 堆(heap)基本概念:       1 对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块.Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存.       2 Java堆是垃圾收集器管理的主要区域,因此很多时候也被称做"GC堆".如果从内存回收的角度看,由于现在收集器基本都是采用的分代收

我的第三十一篇博客---mongo

mongo 进入Mongoshow dbs 展示出mongo里数据库有哪些db 显示当前数据库use admin 切换到admin这个数据库show collections 展示里面的集合 db.info.insert({'name':'zhangsan','age':20}) 向当前数据库info列里插入这项数据db.info.find() 查询info里的数据db.dropDatabase() 删除当前的数据库 mongodb集合的命令不手动创建集合:向不存在的集合中第一次加入数据时,集合会

第三十一篇:!pci of WinDbg

刚刚在看WinDbg在硬件调试方面有哪些扩展命令的时候,让我回想起一个工作中的实际事务. 在xHCI USB3.0/3.1 IP项目开发过程中,需要得到类似实际产品的PCIe配置空间信息,以作对比参考. 当时的做法是,将类似产品的xHCI host controller通过PCIe口接到SoC系统中, 通过编写ARM SoC的Bare metal代码来读取每一个产口的PCIe配置空间. 现在发现,WinDbg在KERNEL MODE(双机与LOCAL)下支持与PCI.PCIe的命令: !pci,

开始写游戏 --- 第三十一篇

今天: 1.增加物品使用组件 2.增加物品使用功能.增加蓝条 上图: 1.增加物品使用组件 { 效果图: 代码: } 2.增加物品使用功能.增加蓝条 { 效果图: 这个录制软件不知道除了啥问题...居然录制出现绿屏的情况. 代码: } 原文地址:https://www.cnblogs.com/dmc-nero/p/12088028.html

Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事

本文投票地址:http://vote.blog.csdn.net/Article/Details?articleid=37834689 前天看到一个颇为纠结的选择题:有一天你遇到一个外星人,这时外星人很热情的邀请你到他们星球去玩,你如何选 1:去,但是你有可能永远不能在回来.2:不去,但是外星人会消去你的记忆 这问题很刺激有木有?!看似简单的一个问题,不同的答案却隐藏着不同的含义.------------------鱼与熊掌不可兼得,类似这种例子生活中会经常碰到.同样的,如果你有去了解过Coco

iOS多版本多设备适配的问题

好吧,能找到这文章的,一般是接到了如下需求:  我是从raywenderlich抽了点内容出来做日记,另外,本文说的不是布局的适配,而是因为ios的升级带来的各版本代码上的不兼容. Deployment Target vs. Base SDK 总的来说,Base SDK表示你愿意支持的最高版本,位于你要设置的Target的属性页的Build Settings > Architectures,一般就选择Latest iOS即可,比如我写这篇日志的时候已经是8.0了 而Deployment Targ