iOS工作系列iOS专题iOS Developer

2015移动开发之iOS回顾

2016-01-11  本文已影响3482人  eaa1d39d22a8

2015是移动技术快速发展的一年,基于Apple平台的技术也发展迅速。iPhone6s/iPhone6s plus、iPad pro等新设备发布,iOS9、watchOS 2、OS X EL Capitan、tvOS等新的平台,Swift开源及Swift 2发布,React Native、JSPatch等开源社区也一片繁荣。但同时XcodeGhost等后门事件对于我们关注iOS安全也敲响了警钟。

PS:本文不是一篇技术深入的文章,只是对技术的回顾,如对某一技术点感兴趣,可详细参考对应的推荐链接。如有遗漏的地方,欢迎评论中补充~

(一)iOS App适配64位

2015年开年,让所有iOS开发者头疼的一件事就是苹果所有app自2015年2月1号起,所有提交审核的App必须适配64位,目的是能充分利用64位ARM处理器的高性能支持,让应用能够拥有更为极致的体验。(iPhone5s开始的A7处理器开始支持64位CPU)


对于App适配64位Apple也给出了方法:

参考,ARM指令集对应的硬件
ARMv8/ARM64
iPhone 6s(Plus),iPhone 6(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)
ARMv7s
iPhone 5, iPhone 5c, iPad 4
ARMv7
iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini

(二) WWDC 2015

WWDC 2015发布了三大平台的更新iOS 9、watch OS 2、OS X EL Capitan,同时发布了Apple Music。

iOS 9

iOS 9发布
主要更新以下亮点
功能角度
  1. Siri语音助手智能化,性能提升40%。
  2. Apple News新闻聚合App发布,但很遗憾中国内地被禁用。
  3. Wallet应用取代Passbook。
  4. iOS自带应用更新:引入Transit通勤路线功能、记事本可以云共享、carplay可自动连接、carplay可自动连接等。
  5. 续航优化,支持低功耗模式,平均续航能力可延长3个小时。
  6. 更新iOS 9剩余容量只需1.3GB,之前更新至少需要4GB以上。
    7)iPad引入双屏模式。

技术角度

  1. 3D Touch
    目前支持3D Touch的设备只有 iPhone 6s 和 iPhone 6s Plus。
  1. Search
    iOS 9中用户可以更容易搜索到他想要的内容(不管是在App还是在web上),增强了Search的功能,对应的技术点主要涉及3个API。
  1. Multitasking
  1. AVKit框架提供了 AVPlayerViewController 类,它会为用户自动显示画中画按钮。如果你使用AVKit 支持PiP功能,但要退出特定的画中画视频,请将播放器视图控制器的 allowsPictureInPicturePlayback 属性设置为NO。
    2)AVKit还提供了 AVPictureInPictureController 类,可以和AV Foundation 框架的 AVPlayerLayer 类一同使用。如果你想为视频播放提供自己的视图控制器和自定义用户界面,可使用这个方法。
    3)同时WebKit框架提供了 WKWebView 类,它支持iOS 9的PiP功能。如果你使用WebKit支持PiP功能,但要退出特定视频的画中画。设定关联webView 实例的allowsPictureInPictureMediaPlayback属性为NO。

注意:如果你的App使用Media Player 框架播放视频,无论使用其框架中的MPMoviePlayerControllerMPMoviePlayerViewController类,你必须迁移使用AVKit或AV Foundation。Media Player视频播放正式在iOS 9中弃用。

在iOS9中Multitasking支持一下机型:

iPad Multitasking支持机型
详细Multitasking相关技术可参考Multitasking Apple Develop文档
或者CocoaChina上的Multitasking翻译文档
  1. App thinning
    iOS App瘦身一直是开发者关注的问题,iOS 9推出了App thinnig,包括三部分功能:slicing、on-demand resources、bitcode。可让你的iPhone能够腾出更多的剩余空间,在应用升级过程中使用更少的数据。

下载和管理按需加载资源是由操作系统完成的。app使用NSBundleResourceRequest来:
a) 请求获取按需加载资源。
b) 通知操作系统某些资源不再使用。
c) 更新下载的优先级。
d) 追踪下载的进度。
e) 检查存储空间不足的通知。
当已下载的某些资源不再使用时,可以用NSBundle中的方法来设置保存优先级。

详细on-demand resources介绍可以参考Apple Develop on-demand resources guide

  1. 其它
    a) 新增3种的App Extension Points:Network、Safari、Spotlight。
    b) 新增Contacts Framework,与此同时废除AddressBookUI Framework。
    c) Watch Connectivity,由于watchOS 2的架构变化,需要这么一个东西来对iPhone和Watch进行双向通信。
    d) UIKit新增,如UIStackView。
    e) 新增Safari Services Framework。
    f) 游戏方面新增了更多的Api,涉及GameplayKit、Model I/O Framework、MetalKit三方框架。
    g) iOS 9.1新增UITouch对Apple Pencil API的支持,详细参考

  2. 适配iOS9
    关于适配iOS 9就不一一展开介绍,主要涉及到以下几个点,详细可以参考Github iOS9适配详解
    a) 网络适配ATS:改用更安全的HTTPs。
    b) 更灵活的后台定位。
    c) 企业级分发,默认不能安装,需要在设置里点击“信任”。
    d) 适配Bitcode。
    e) URL Scheme 适配
    引入白名单概念,打开第三方App需要注册在URL中注册白名单。
    f) iOS9更改了字体,字体间隙变大导致 UI 显示异常。

  3. iOS 9.2发布。

watchOS 2

watchOS 2相对于上个版本做了很多改进。watchOS 2 的主要变化跟早期的 iPhone 差不多,那就是增加了本地化的 app。苹果向开发者提供了全新的 WatchKit,也就是说从 watchOS 2 开始,应用开发者可以基于 Apple Watch 开发一些应用,应用可以通过 API 调用数码表冠、麦克风甚至 Tapic Engine 等功能,应用获取的健康数据也可以直接在 Apple Watch 上进行处理,不需要再传输到 iPhone。如下图所示:

watchOS 2架构演变
同时watchOS 2新增了ClockKit Framework,可以将你的Watch App相关信息同时显示在表的钟面上。
关于watchOS 2的更多介绍可以参考Apple Develop文档

OS X EL Capitan

OS X EL Capitan
WWDC 2015同时发布了OS X EL Capitan版本。El Capitan从窗口管理、内置app和搜索等方面优化了Mac体验,并提升了性能,令启动和切换app、打开PDF文件以及访问电子邮件等日常事务都变得更加快速。
关于OS X EL Capitan的技术点详细讲解也超出了本文的范围,详细可以参考Apple Develop文档

(三)Swift

2015最让人兴奋的事之一莫过于Swift 2.0发布及Swift宣布开源,Swift社区及开源库也发展迅速。

  1. 增加guard语句。
  2. 增加异常处理机制。
  3. 协议可扩展。
  4. 打印语句的语法改变。
  5. 增加available检查。
  6. do-while语句重命名。
  7. 增加defer关键字。
    详细介绍可参考
  1. Swift Complier & Standard Library(Swift编译器&基础库
    编译器主要负责Swift的语法解析&语义分析,将Swift语言编译成高效可执行的机器代码,同时前端提供比如Swift语法高亮,代码自动补全等一些便捷的工具(想读懂这块源码要有编译器的基础知识,词法分析、语法分析......)。Swift基础库主要包括各种数据类型,如基础类型、协议、方法、集合及集合所遵循的协议和操作数据类型的基础算法。Swift的基础库底层是以Swift来实现的,更多的功能细分可以参考Swift官方博客-编译器&基础库基本介绍。
  2. Swift Package Manger(Swift包管理器
    Swift主要是用来管理和共享Swift代码的工具,与Swift build system协调来自动处理Swift的下载,链接及依赖处理。 ( max howell 与mattt参与开发,mattt竟然跳槽去了苹果)。同时苹果官方也给出了一个 demo来教你怎样写一个Library Package,同时处理各个Packages之间的依赖(demo :example-package-dealer ,感兴趣的同学可以动手写下)。
  3. Swift Core Library(Swift核心库
    Swift核心库提供了比基础库更高级的功能,基于 Swift 标准库。这些库提供的函数有:定位,网络,多线程,单元测试,数据持久化,文件系统访问,用户参数等功能。Swift核心库的功能将会在Swift 3.0发布,个人预计Swift 3.0将会在2016 WWDC发布。目前核心库开源了三个库Foundation、libdispatch(GCD)、XCTest(单元测试框架),这三大框架也将会随3.0发布,目前处在早期开发阶段。

(四)tvOS

tvOS
Apple TV在国内没有销售,随着近年Apple TV新品的发布,全新的第四代Apple TV 采用A8 芯片,性能更胜以往,因此开发者可为电视打造引人入胜的游戏和定制内容的 app。同时,Apple也发布了tvOS系统,该系统也是基于iOS系统,也内置了App Store。国外Netflix、HBO、Hulu等视频平台均已推出根据tvOS重新制作了对应版本的app,
同时在开源社区上许多开源组件也对tvOS给予了支持。
详细的tvOS开发文档参考
tvOS human-interface-guidelines
如AFNetworking支持iOS, OS X, watchOS, and tvOS全平台。
未来关于Apple TV在国内的销售仍然不明,不过个人对tvOS的发展还是很看好的。

(五)XCodeGhost

2015令人值得关注的一件事是XCodeGhost,同时也给iOS开发者对于App安全敲响了警钟。
Xcode Ghost是通过Xcode注入,于2015年9月被发现。它的初始传播途径主要是通过非官方下载的 Xcode 传播,通过 CoreService 库文件进行感染。当应用开发者使用带毒的Xcode工作时,编译出的App 都将被注入病毒代码,从而产生众多带毒APP。用户在iOS设备上安装了被感染的APP后,设备在接入互联网时APP会回连恶意URL地址init.icloud-analysis.com,并向该URL上传敏感信息(如设备型号、iOS 版本)。
苹果第一时间也对感染XCodeGhost的App下架,
阿里工程师也针对XCodeGhost做了逆向分析,可以参考XCodeGhost逆向分析

(六)开源项目

(七) 更多其他技术点

后面几点展开太多,也是移动开发中值得关注的永恒主题,在此就不一一列举,欢迎补充~。
移动架构
跨平台
数据持久化
App性能优化
APP瘦身
页面布局
动效开发

参考链接:

苹果官方适配64位参考方法
2015移动开发白皮书·IOS篇
iOS 9/新OS X/watch OS成主角 秋季正式推出
iOS 9分屏多任务
iOS 9 App thinning介绍
Facebook与Twitter提供的Apple tvOS SDKs支持登录与分析功能

React Native 官方文档中文版
jspatch平台

上一篇 下一篇

猜你喜欢

热点阅读