iOS9应用适配,技Get
iOS9刚发布不久时,app在新的系统中会出现闪退的情况,app就iOS9的适配做了一些修改,以致用户体验性更好。特此做一下的总结和分享。主要从下面几点做的适配。
- 1.iOS9网络适配ATS-HTTP VS HTTPS
- 2.Bitcode
- 3.iOS9 URL Scheme 适配_引入白名单概念
- 4.字体间隙变大导致 UI 显示异常
- 5.地理位置
- 6.状态栏
- 7.联系人框架--Contacts VS AddressBook
iOS9网络适配-HTTP VS HTTPS
- ATS——App Transport Security
- 为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求
- 解决方案1:立即让公司的服务端升级使用TLS 1.2,以解析相关数据
- 解决方案2:虽Apple不建议,但可通过在 Info.plist 中声明,倒退回不安全的网络请求依然能让App访问指定http,甚至任意的http
Bitcode
- 未来Watch应用须包含Bitcode,iOS不强制,但Xcode7默认会开启Bitcode。
- bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化程序的二进制文件,而不需要重新提交一个新的版本到App store上。当提交程序到App store上时,Xcode会将程序编译为一个中间表现形式(bitcode)。然后App store会再将这个bitcode编译为可执行的64位或32位程序。
iOS9 URL Scheme 适配_引入白名单概念
字体间隙变大导致 UI 显示异常
- iOS8中,字体是Helvetica,中文的字体有点类似于“华文细黑”。只是苹果手机自带渲染,所以看上去可能比普通的华文细黑要美观。iOS9中,中文系统字体变为了专为中国设计的“苹方” 有点类似于一种word字体“幼圆”。字体有轻微的加粗效果,并且最关键的是字体间隙变大了!
- 解决方案:使用sizetofit 或者ios向上取整 ceilf() 或者提前计算
- CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
- CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
地理位置
- 适配iOS9,同一App中的多个location manager:一些只能在前台定位,另一些可在后台定位,并可随时开启或者关闭特定location manager的后台定位。
- _locationManager = [[CLLocationManager alloc] init];
- _locationManager.allowsBackgroundLocationUpdates = YES;
状态栏
- Xcode 升级后,旧的状态栏的样式设置方式会引起警告设置, app 的状态栏样式的时候,使用了旧的方式,在 info.plist 里面的 View controller-based status bar appearance 默认会为 YES,即使不设置也是 YES,但一般 iOS6 的时候为了设置状态栏样式,需要将其设为NO,iOS7,8也兼容,但是到了iOS9 就会报警告。
- [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
- 解决方案:对于原有的OldApi进行替换,在rootViewController以及自定义的基类Navi gationController中的类中重写如下方法即可。对于特殊界面做单独处理;
- -(UIStatusBarStyle)preferredStatusBarStyle
- {return UIStatusBarStyleLightContent;}
联系人框架--Contacts VS AddressBook
iOS 9 中,苹果介绍了新的 Contacts framework。允许用户使用 Objective-C 的 API 和设备的通讯录进行交互,同样适用于 Swift 语言。比起之前通过 AddressBook framework 来读取联系人信息来说,这是一个巨大的进步。
优点:获取数据更加快捷,效率性能更高,且方便调用;