BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

苹果手表应用开发

| 作者 Sergio De Simone 关注 18 他的粉丝 ,译者 丛一 关注 2 他的粉丝 发布于 2015年1月22日. 估计阅读时间: 4 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

在最近的西雅图Xcoders聚会上,Omni Group的软件工程师Curt Clifton介绍了如何进行苹果手表应用的开发。在这次介绍中谈及了手表应用的概念模型,手机和手表之间的数据通信以及应用开发中会遇到一些的挑战。

概念模型

Clifton提到,在开发过程中需要考虑的第一件事就是:在WatchKit 1.0中,代码是运行在一个与iPhone手机应用绑定的扩展中的。

手表本身不会运行任何非苹果开发的代码,不过它可以保存图片资源和经过编译的故事板(Storyboard)。此外,也可以动态地生成图片并将其输送至苹果手表,在苹果手表中为这些图片保留了20MB的缓存空间,不过根据Clifton的经验,这种方式速度很慢并且可靠性不高。

WatchKit框架目前还相当小,主要由手表上的视图代理类组成。另外,这些类主要提供专用的setter方法,没有getter方法。

同步选项

由于iOS扩展与其宿主应用运行在不同的进程中,两者之间的数据同步就非常关键。因此,Clifton回顾了目前可用的几种不同的同步机制。

  • NSFileCoordinator: this has been unfortunately ruled out for app↔extension coordination by an Apple technical note
  • NSFileCoordinator:很不幸,在一篇苹果技术说明中,这中方案已经被排除,不再作为应用扩展协作的方式。
  • Groups entitlement and user defaults: pretty easy to setup and use, but it will not notify about changes.
  • 组权限用户默认值这种方案配置和使用相当容易,不过在发生变化时,不会发送通知。
  • 共享的CoreData/SQLite数据库:据Clifton介绍,是相当不错的一种机制。
  • 种子文件和回调:Clifton在其示例应用中使用并且更加详细描述的一种解决方案。

    • iPhone宿主应用向共享应用容器中写入一个种子文件,其中承载着某种格式的负载,如JSON格式。
    • 手表扩展读取数据种子文件,然后在其准备向父应用返回某个用户操作时,会调用openParentApplication:reply:方法,将处于后台的宿主应用唤醒。父应用接收到一个回复块,在其准备就绪后,将调用这个回复块。
    • 宿主应用可以更新种子文件中的数据然后运行回复块,将新的数据传递给扩展。
    • 手表扩展不再需要读取种子文件,它只需要通过回复块就可以在内存中更新其接收到的数据。

在演示的下一部分,Clifton走查了他的示例应用源代码并向观众演示如何在Xcode中进行调试,调试过程类似于任何一个iOS 8应用扩展的调试过程。

挑战

这次讨论的最后一个部分是关于开发者将会面临的挑战。

  • 如我们之前提到的,WatchKit只提供setter方法,因此第一个挑战就是向未处于活动状态的控制发送命令。这可能会导致数据不一致,可以通过让每个类跟踪其控制状态是活动还是不活动来解决这个问题。在示例应用中,是通过一系列_updateDisplay*方法实现的。
  • 如果在Xcode文件拷贝构建步骤能够拷贝框架,可以在宿主应用和手表扩展之间使用共享的框架。
  • 不支持自动布局,可以用从左至右,从上到下填充的组替换;可以用组内加组的方式构建较为复杂的UI,不过这是一个和自动布局完全不同的模型。
  • 最后,现在还不知道手表的通知接口的具体情况,而且如何处理来自于手表的通知也尚不清楚。

可以在GitHub上找到Clifton的示例应用。

查看英文原文:Developing an Apple Watch App

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT