开发者社区> 浪途> 正文

iOS8到iOS9 变化笔记

简介: iOS8到iOS 9 变化笔记  这里将介绍下我们日常开发一些从iOS8过度到iOS9给我们带来的一些变化,及解决方法。  一、信息收集  language:zh-Hans(iOS8) ——> zh-Hans-CN(iOS9) 所有的进程列表都获取不到了 二、App Transport Security  iOS9和OS X El Capita
+关注继续查看


iOS8到iOS 9 变化笔记 

这里将介绍下我们日常开发一些从iOS8过度到iOS9给我们带来的一些变化,及解决方法。 

一、信息收集 

language:zh-Hans(iOS8) ——> zh-Hans-CN(iOS9) 所有的进程列表都获取不到了


二、App Transport Security 


iOS9和OS X El Capitan的一个新特性,App Transport Security 的目地是提高Apple 操作系统的安全性以及在此操作系统上运行的任何应用的安全性。ATS是苹果针对与 NSURL这一层做的封装,iOS9后ATS默认是开启的,即网络传输需要使用HTTPS。如果想在iOS9后继续使用HTTP的话,有两条路可以走: 


在Info.plist中添加 NSAppTransportSecurity类型Dictionary,

在NSAppTransportSecurity下添加NSAllowsArbitraryLoads,Boolean 为 YES。 


直接使用CFNetwork做网络请求,ASIHTTPRequest就是基于CFNetwotk做的封装,如果有需求的同学可以看看ASI里面           的源码,如果某个时间段你又想要使用HTTPS的话,ASI对SSL/TSL的证书验证有点问题,证书验证还得自己封装一下才行。刚才         我说道,ATS是苹果针对与NSURL这一层做的封装,所以我们使用CFNetwork或者更底层做网络请求的话是不受ATS限制的。

 

三、移除了discoveryd DNS解析服务 

iPhone升级到iOS8后WiFi有时候会有问题,特别是Mac升级到OS X Yosemite后,时而电脑休眠唤醒唬就连不上WiFi,有时候还突然掉线,经常要手动去关闭WiFi在重新连接,这是因为苹果到了OS X Yosemite系统后,把之前的mDNSResponder换成了discoveryd DNS。iOS9和OS X Yosemite10.4后mDNSResponder又回来了。 


四、App Thinning

是一个关于节省iOS设备存储空间的功能,它可以让iOS设备在安装、更新及运行App等场景中仅下载所需的资源,减少App的占用空间,从而节省设备的存储空间。 


App Thinning主要有三个机制: 


Slicing: 

开发者把App安装包上传到AppStore后,Apple服务会自动对安装包切割为不同的应用变体(App variant), 当用户下载安装包时,系统会根据设备型号下载安装对应的单个应用变体。 


On-Demand Resources:

 ORD(随需资源)是指开发者对资源添加标签上传后,系统会根据App运行的情况,动态下载并加载所需资源,而在存储空间不足时,自动删除这类资源。


Bitcode:

开启Bitcode编译后,可以使得开发者上传App时只需上传Intermediate Representation(中间件),而非最终的可执行二进制文件。 在用户下载App之前,AppStore会自动编译中间件,产生设备所需的执行文件供用户下载安装。 


启用Bitcode编译机制,需要注意以下几点:

如果应用开启Bitcode,那么其集成的其他第三方库也需要是Bitcode编译的包才能真正进行Bitcode编译

其中,Bitcode的机制可以支持动态的进行App Slicing,而对于Apple未来进行硬件升级的措施,此机制可以保证在开发者不重新发布版本的情况下而兼容新的设备。


Xcode7默认是开始了Bitcode,如果不想使用可以手动关闭Bitcode: 

选择项目——>点击Target——>点击Build Setttings——>搜索栏里搜bitcode——>把Enable Bitcode对应的Yes改成No。

 

开启Bitcode编译后,编译产生的.app体积会变大(中间代码,不是用户下载的包),且.dSYM文件不能用来崩溃日志的符号化(用户下载的包是Apple服务重新编译产生的,有产生新的符号文件),使用dSYM来收集Crash日志的同学得注意了。 

通过Archive方式上传AppStore的包,可以在Xcode的Organizer工具中下载对应安装包的新的符号文件 

五、后台定位 

iOS9后苹果为了对保障用户的地理位置的隐私对App请求后台定位有了权限设置,则需要多加一些代码。如果不适配iOS9,就不能偷偷在后台定位,如果没有后台定位的权限也是可以在后台定位的,只是会出现蓝条。 

开启后台定位功能:locationManager.allowsBackgroundLocationUpdates = YES; locationManager是CLLocationManager的对象,用来管理整个定位的。


重点 :


配置info.plist,添加一个Required background modes,Array类型的,然后在Required background modes里面Item 0对应的Value设置为App registers for location updates,这样就解决了iOS9后台定位出现蓝条的问题了。


六、 UI Testing 

Xcode7中苹果引入了一种新的方式在应用中进行测试——UI Testting,UI Testting允许我们找到UI元素与之交互,还能检查属性和状态。UI Testting已经完全集成进了Xcode7的测试报告,可以和单元测试一起执行。使用起来跟之前Xcode5出来的XCTest差不多,Xcode bots提供对此的支持,而且command line支持当UI测试失败时会立即发出通知。 可以参考Github上的Demo,

步骤 : 

在DemoTests.m里创建一个test开头的方法 在setUp()里启动应用 XCUIApplication().launch() 

新建一个方法test开头的,在里面获取应用let app = XCUIApplication() 的到let app = XCUIApplication(),app.buttons[“View Detail”].tap()?。

buttons是当前这个界面的所有按钮的集合,[]里面写按钮的名字,tap()就是执行这个按钮所对应的方法,可以是网络请求、界面跳转等等。 

七、URL scheme 

在iOS9中,如果使用URL scheme必须在"Info.plist"中将你要在外部调用的URL scheme列为白名单,否则不能使用。 

配置info.plist,添加一个LSApplicationQueriesSchemes,Array类型的,然后在LSApplicationQueriesSchemes的Item里面添加urlscheme就行了,urlscheme是任意一个字符串,就是你自己需要使用的urlscheme,iOS9 URL scheme白名单适配就完成了。 

八、出现大量的警告 

Xcode7后运行以前的项目后出现大量的警告如: (null): warning: /var/folders/p4/z7zy68r92hd3p5ry5g2v3k_8rlwzzr/C/org.llvm.clang.dalmo/ModuleCache/1TXZDLI9N2EMV/Foundation-3DFYNEBRQSXST.pcm: No such file or directory。 

作为一个有洁癖的我反正是不能忍,出现警告的大致原因跟我上面提到的开启Bitcode,.dSYM文件不能用来符号化有关,Xcode试图去创建dSYM文件,但是你又不需要。


解决方法 : 


Build Settings ——>Build Options——>Debug Information Format Debug下的DWARF with dsYM File改成DWARF 

Release下的还是之前默认的DWARF with dsYM File不变

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Windows 平台上也可以进行 iOS App 的开发
为了将 iOS APP 上架至 App Store,我们需要准备以下基本需求资料:1. 苹果开发者账号(如果还没有账号,需要先申请,可以参考苹果开发者账号申请教程)
48 0
iOS开发 自拍及照片镜面翻转问题解决办法
iOS开发 自拍及照片镜面翻转问题解决办法
20 0
iOS开发-用keychain替代UDID
随着H5技术和VUE技术的流行,现在越来越多人喜欢试用hbuilder、uniapp或apicloud这些框架或工具来生成ios的app,这些工具会帮我们生成一个ipa文件。
21 0
ios APP最新iOS开发上架测试教程
本文详细介绍最新的在windows上进行ios app开发编译打包安装到手机测试的完整流程。介绍ios开发经常遇到的问题和解决方法,包括ios开发证书,ios开发描述文件等。
64 0
iOS开发之打包上传到App Store——(一)各种证书的理解
OK,有日子没写iOS开发的相关文章啦,主要是最近的精力都没在这上面,不过既然产品已经快要出来了,就有必要了解一下各种证书啥的(众所周知iOS的一堆证书可是很让人头大呀),最近确实被这个搞得头大,然后就决定参考网上的一些资料,进行一下整理,留作一个备份。
32 0
100个iOS开发面试题汇总
关于iOS开发面试,不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会。
22 0
iOS开发助手、ipa便捷上传工具!
本视频介绍iOS APP真机调试和上架App Store两个步骤。
22 0
IOS开发之UIScrollView约束布局
IOS开发之UIScrollView约束布局
24 0
iOS开发:下架App的步骤
首先登陆你的 iTunes Connect
576 0
2022 ios APP最新iOS开发上架测试教程
2022 ios APP最新iOS开发上架测试教程
158 0
+关注
浪途
到2016年10月,4年的iOS开发了,一边一边学习Java后台开发
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
基于WebAssembly的H265播放器
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载