开发者所须要知道的 iOS 10 SDK 新特性

 

转自:https://onevcat.com/2016/06/ios-10-sdk/ios

写的很好啊。哈哈哈swift

总览

距离 iPhone 横空出世已通过去了 9 个年头,iOS 的版本号也跨入了两位数。在咱们回顾过去四五年 iOS 系统的发展的时候,难免感叹变化速度之快,迭代周期之短。iOS 7 翻天覆地的全新设计,iOS 8 中 Size Classes 的出现,应用扩展,以及 Cloud Kit 的加入,iOS 9 里的分屏多任务特性等等。Apple 近年都是在 WWDC 发布新的系统和软件,而后在秋季和冬季 (或者来年春季) 召开硬件产品的发布会。WWDC 上每一项软件的更新其实都预示了相应的硬件的方向,相信今年也不会例外。安全

对于开发者来讲,好消息是 iOS 10 中并无加入太多内容。按照适配的需求,来年的 iOS 开发至少应该能够从 iOS 8 甚至 iOS 9 开始,咱们将有时间对以前的版本特性进行更好的梳理,消化和实践。相比于开疆扩土,iOS 10 更专一的是对现有内容的改进,以弥补以前迅速发展所留下的一些问题,这其实正是 Apple 当下所亟需作的事情。服务器

生态整合与 Extension 开发

在 iOS 10 里 Apple 延续了前几年的策略,那就是进行平台整合。全世界如今没有另一家厂商在掌握了包括桌面,移动到穿戴的一系列硬件设备的同时,还掌控了相应的从操做系统,到应用软件,再到软件商店这样一套完整的布局。Apple 显然也很是明白这个优点意味着什么。因此近年来 Apple 一直强调平台整合,若是你的应用可以同时在 iOS,watchOS 以及 macOS 上工做的话,毫无疑问将会更容易吸引用户以及 Apple 的喜好。网络

另一点则是各个应用之间的整合和交互。不难发现,随着近年来 extension 开发的兴起,Apple 逐渐在从 app 是“用户体验的核心”这个理念中转移,变为用户应该也能够在通知中心,桌面挂件或者手表这样的地方完成必要交互。而应用之间的交互在之前能够说是 iOS 系统的禁区,可是去年随着 Workflow 的成功,Apple 对于应用之间的交互有助于用户生产力的提高有了清晰的认识。今年 SDK 中几个重大更新其实都是围绕这个主题来进行的。session

iOS 10 中,Apple 为咱们添加了茫茫多 extension 的新模板,以致于在同事之间开玩笑都是咱们立刻就要丢掉 iOS app 开发者的工做,而转变为 iOS extension 开发者这样了。新加入的扩展的种类和数量都足以说明使用应用扩展以及进行扩展开发在从此 iOS 开发中的重要地位。若是你对扩展开发还一无所知,能够先看看这篇入门文章,里面简单介绍了关于扩展的基本概念,不一样开发 target 之间代码共享的方式,以及通用的扩展开发方法等。app

SiriKit

Siri API 的开放天然是 iOS 10 SDK 中最激动人心也是亮眼的特性。SiriKit 为咱们提供一全套从语音识别到代码处理,最后向用户展现结果的流程。Apple 加入了一套全新的框架 Intents.framework 来表示 Siri 获取并解析的结果。你的应用须要提供一些关键字代表能够接受相关输入,而 Siri 扩展只须要监听系统识别的用户意图 (intent),做出合适的响应,修改以及实际操做,最后经过 IntentsUI.framework 提供反馈。整个过程很是清晰明了,可是这也意味着开发者所能拥有的自由度有限。框架

在 iOS 10 中,咱们只能用 SiriKit 来作六类事情,分别是:编辑器

  • 语音和视频通话
  • 发送消息
  • 发送或接收付款
  • 搜索照片
  • 约车
  • 管理健身

若是你的应用刚好正在处理这些领域的问题的话,添加 Intents Extension 的支持会是很棒的选择。它将提升用户使用你的应用的可能性,也能让用户在其余像是地图这样的系统级应用中使用你的服务。工具

SiriKit 笔记 (待填坑)

User Notifications

通知中心向来是 iOS 上的兵家必争之地。如何提供适时有效的通知,每每决定了用户活跃和留存的可能性。在 iOS 10 上,Apple 对通知进行了增强和革新。如今,为了更好地处理和管理通知,和本地及推送通知相关的 API 被封装到了全新的框架 UserNotifications.framework 中。在 iOS 10 中,开发者的服务器有机会在本地或者远程通知发送给用户以前再进行修改。

另外,在以前加入了 notification action 以及 text input 的基础上,iOS 10 又新增了为通知添加音频,图片,甚至视频的功能。如今,你的通知不只仅是提醒用户回到应用的入口,更成为了一个展现应用内容,向用户传递多媒体信息的窗口。

User Notifications 笔记 - 活久见的重构 - iOS 10 UserNotifications 框架解析

iMessage Apps

Message 应用大概是 Apple 在宣传 iOS 10 时着力最多的部分了。虽然新的贴纸包,自动转换颜文字,发送全屏效果等功能都很酷炫,可是对于程序开发者来讲,可能仍是对 iMessage Apps 更感兴趣。Xcode 8 中,Apple 在 iOS Application 模板中添加了一类新的项目类型,Messages Application。同时,模拟器甚至还开发了新的双人对话模式,以供开发者调试这类 app。

虽然名义上是独立 app,但实际上工做的依然是一个 extension。在该扩展中,Messages.framework 将承担与系统的 message 界面交互的主要职责。你经过提供一个自定义的 View Controller,来获取用户在使用你的 message app 时进行对话的上下文,以及发送接收等操做,并作出合适的响应。这个扩展在用来进行直接在 Message 应用中一些自定义共享会很好玩。可是鉴于 Apple 暂时没有打算将 Message.app 跨平台的缘由,可能也注定了这只会是一种补充,而没法成为主流。

iMessage Apps 笔记 (待填坑)

IDE 和工具改进

除了整合平台战略思想下的一些 SDK 改变,今年和 iOS 开发者相关的更多的是开发工具的进步和革新了。

Xcode 8

Xcode 8 展示出了不少有意思的新特性,好比更强大的 View Debugging,能够帮助咱们追查内存引用问题的 Memory Debugging 等。这些工具十分强大,也将帮助咱们在开发过程当中及早发现问题,而不要将它们带入在最终产品中去。

在 app 签名方面,Apple 终于意识到了他们在 Xcode 7 中所犯得错误。我想可能不止一我的被证书和描述文件出问题时的 "Fix Issue" 按钮坑过。这个按钮不只不会修正问题,反而会直接注销现有的开发者证书,而后“自做主张”地从新申请。大多数状况下,这让事情变得更加糟糕。特别是对于新加入的开发者,他们并不理解 Apple 的证书系统,错误的操做和处置,每每让开发环境变得不可挽回。Xcode 8 中,同一个开发者账号如今容许多个开发证书,而彻底重作的 app 签名系统也足够好用,而且避免了误操做的可能性。在兼顾自动配置的基础上,也为大型项目和复杂的 CI 环境提供了足够灵活的配置空间,这绝对值得点赞。

另外 Xcode 终于提供了进行代码编辑器扩展的能力。如今开发者能够建立 XCSourceEditorExtension 来对 Xcode 的功能进行扩展了,在没有文档帮助和官方支持的状况下摸索着为 Xcode 制做插件的历史也即将结束。

Xcode 8 笔记 (待填坑)

Swift 3

Swift 开源已通过去半年时间。在 Swift 2.2 中咱们已经看到了开源的社区力量对语言产生的深入影响,而在 Swift 3 中这一影响的效果将更加明显。

最大的变化在于 Foundation 框架的从新导入,可能过一段时间再回头看的话,这将标志着 Swift 与 Objective-C 完全分家。Foundation 框架中的 API 如今以更符合 Swift 的方式被导入到语言中。大致来讲,这些变化包括去除 NS 前缀,将绝大部分 class 转换为 struct (虽然底层仍是 copy-on-write 的引用实现,能够参看ReferenceConvertible 协议的内容),去掉 API 中重复的语义等。若是在当前你还能看出 Swift 和 Objective-C 在使用 Foundation 或者说开发 app 时同根同源的话,Swift 3 正式发布后可能状况会大不相同。

因为引用类型向值类型的转换,也将致使咱们在使用 Swift 开发时的思考方式发生变化。以往的 Foundation 框架中类型的可变性是由不可变类型和它的可变类型版本 (好比 NSData 和 NSMutableData) 来进行区分的。而在 Swift 3 中,通常来讲将只有做为结构体的不可变类型 (好比 Data),对于这类结构体的改变,将会是更安全的基于写时复制的行为,而再也不是原来可变对象那样的危险的内存操做。这在不少时候除了保证数据共享时的安全性之外,内部的引用特性也保证了调用速度。实际上,由于减小了没必要要的复制 (好比根据一个不可变对象建立相应的可变对象),实际上经过 Swift 3 的 API 使用 Foundation 的速度将比原来更快!

关于 Swift 3 的更多内容,我会在个人《Swifter - 100 个 Swift 必备 tips》一书中经过补充章节的方式进行说明。同时,该书现有的 Swift 2 相关的描述和示例也会按照 Swift 3 的语法规范和特性进行更新,以适应最新版本。您能够访问 swifter.tips 获取这本书的更多相关内容。

Apple 生态和其余

另外影响比较重大消息是,在 iOS 9 引入的 ATS 将在来年更加严格。2017 年起,新提交的 app 将再也不被容许进行 http 的访问,全部的 app 内的网络请求必须加密,经过 https 完成。因此若是你家 app 的服务器或者某些访问页面仍是 http 的话,须要尽早过分到 https。

另外,watchOS 3 和 tvOS 也有一些新的内容。其中最重要的当属 watchOS 中可使用 SceneKit 和 SpriteKit。虽然这两个框架本意是作游戏,可是 watch 的小屏幕和低性能可能并不足以支撑咱们在这样一个受限平台很好的做品。可是这两个框架能够为交互乏味的 watchOS 提供很好的动画效果的补充,可能会是它们在 watchOS 上更合适的用途。

最后,OS X 更名为 macOS,有些媒体和开发者将其解读为去乔布斯化,其实我更倾向于这是一种强迫症和完美主义的基本需求。无论名字如何改变,Apple 在 iOS,macOS,watchOS 和 tvOS 这四个产品线上的布局已经完成,整个生态如今看来也还十分健康。Apple 在用户权益和隐私上的重视,以及像是在 https 上的推进,无疑都是这个时代前进的动力。

总结

像往年同样,我会在以后逐渐补充 session 笔记,经过一些简单的例子说明相关的新增框架的使用方式。届时你也能够在这篇文章中找到相关连接,或者经过订阅的方式来确保在第一时间获取相关内容 (订阅时请不要使用 QQ 邮箱,会没法收到邮件)。不过直接访问 Apple 开发者网站 WWDC 相关的内容会是获取这些知识更快的方式。

Happy WWDC. Happy Coding!

相关文章
相关标签/搜索