Apple Watch 简介:iOS 开发者的功能介绍
已发表: 2022-03-11去年 6 月在 WWDC 上宣布并于最近发布的 Apple Watch SDK 引起了很多人的担忧。
这只是第一轮,功能有限。 Apple Watch v2 将紧随其后,但不会那么快——因此有远见的 iOS 开发者应该准备好等待几个月。
开发者之间的感受是极其多样化的。 许多 iOS 开发人员对 Apple Watch SDK 及其功能施加的许多限制感到失望。 另一方面,我们中的许多人都很兴奋,而其他人则离中立立场不远。 但是,毕竟,每个人显然都很高兴有一个新玩具可以玩。
引人注目的一件事是 Apple Watch 用户的称呼方式。 他们不是用户或移动用户,也不是观看用户或(有一点独创性的)观看者。 他们只是佩戴者。 一个听起来有点奇怪的术语,因为如果用户使用,暗示他在交互,佩戴者会穿,这听起来像是一种被动用法。 当然,Apple Watch 远非被动设备。 它将手表的传统功能与现代技术支持的更高级选项相结合,尤其是与 iPhone 结合使用时。 就在不久前,手机开始变得不仅仅是手机——历史正在重演。
然而,最终佩戴者的名字似乎是一个明智的选择。 至少在编写用户故事时,我不必完整地指定“作为Apple watch 用户,我想……”,我可以将其缩短为“作为佩戴者,我想要……”——减少歧义。
设备和用户界面
省略所有与开发不严格相关的 Apple Watch 功能,设计师和开发人员必须处理的最重要问题是尺寸 - 实际上有 2 种不同的 Apple Watch 型号:
- 38 毫米屏幕,分辨率为 272x340 像素
- 42 毫米屏幕,分辨率为 312x390 像素
在这两种情况下都有视网膜显示。
不用说,iOS 开发人员需要确保应用程序在两个版本上看起来都不错。
Apple Watch 连接
Apple Watch 通过蓝牙 4.0 与配套 iPhone 通信,并且还支持 NFC。 显然,它没有 WiFi 连接。 虽然它可以通过 iPhone 绑定并同时使用 WiFi 和蜂窝数据连接。 但在新闻信息中,Apple 明确表示它还具有 Wi-Fi 802.11b/g。
用户交互
用户交互(或佩戴者交互,如果愿意)可以以 4 种不同的方式发生:
- 简单的触摸:点击按钮是一个典型的例子
- 强制触摸:通过在点击并按住屏幕时施加更大的力来激活。 类似于在 PC 上单击鼠标右键,它将显示一个上下文菜单(最多包含 4 个项目)
- 手势:垂直滑动以滚动,水平滑动以在页面之间导航,左边缘滑动以向后导航
- 数字表冠:用于微调滚动的硬件输入
用户交互存在一些限制,尤其是手势:
- 它们是预先确定的,因此不支持自定义手势
- 不支持多点触控,因此无需捏合缩放或类似手势需要一根以上的手指
这是 Apple WatchKit 指南中的上下文菜单示例。
用户界面
说到 Apple Watch UI,屏幕尺寸的减小、设计选择以及在许多情况下是底层硬件的自然结果都会带来一些限制。 我们预计其中一些将在 SDK 的未来版本中变得更好,尽管无法预测或预测实际会发生什么变化。
第一个限制是关于如何实现用户界面:仅通过情节提要。
苹果手表导航
WatchKit 提供了两种相互排斥的方式在 Apple Watch 应用的视图之间导航:
- 一种分层导航模型,类似于 iOS 中使用的模型,在导航期间视图堆叠
- 基于平面页面的模型,用户可以通过左右滑动在页面之间导航
不幸的是,在同一个应用程序中组合这两种导航模型是不可能的。 必须在整个应用程序中选择和使用其中之一。
但是,任何界面控制器都可以呈现模态界面控制器,它可以是单个界面控制器,也可以是多个界面控制器,使用页面导航模型排列。
用户界面元素
有 11 个不同的界面组件:
- 按钮
- 滑块
- 图片
- 标签
- 分隔器
- 滑块
- 转变
- 桌子
- date:自动显示当前日期或时间
- timer:显示倒计时,自动更新
- 组:一个或多个子组件的容器
- 地图:显示非交互式地图,可选择最多 5 个注释
布局
组组件可用于在垂直或水平布局中组合 Apple Watch UI 元素。 元素将根据其大小自动布局。 考虑到组可以嵌套,此处提供了一定程度的灵活性。
不幸的是,自动布局不可用。 但是,考虑到用户界面与 iOS 对应的用户界面相比要简单得多,这可能不会造成太大损失。
对于列表,表格组件使用单列模型创建和管理内容,就像UITableView
一样。 但是,它没有使用委托模式——通过先指定行数,然后在 for 循环中初始化每一行的内容,直接将数据源提供给表。 积极的一面是,仍然可以使用自定义表格行(即 iOS 行话中的单元格)
一目了然
Glances 是只读的、单页的和不可滚动的视图,用于显示及时和相关的应用程序特定数据的快照。 不允许用户交互,除了点击事件。 点击一瞥将简单地启动应用程序,可选择提供上下文以让应用程序显示特定的界面控制器。
例如,Apple Watch 天气应用程序可以使用 Glance 显示当前温度、位置等。通过点击它,应用程序打开,显示更多详细信息。
这是来自官方 Apple WatchKit 指南的示例 Glance。
Apple Watch 通知
有 2 种通知类型: short look和long look 。

短视通知用于提醒佩戴者发生了什么事,当手腕放下时它会自动消失。 布局非常简单,由应用程序图标、应用程序名称和通知标题组成。
保持手腕抬起一段时间,或明确点击短视通知,会将其变为长视通知。 此类通知提供更多详细信息,并支持通过可自定义按钮进行用户交互。 这些按钮可以向应用程序发送通知。 与短通知不同,用户必须通过点击自动显示在视图底部的按钮来明确关闭长通知。
可以在此处找到有关使用 Apple Watch 通知的更多信息。
发展
建筑学
下载支持 WatchKit 的 Xcode 版本(目前是 6.2 测试版),并尝试在不阅读任何文档的情况下开始使用 WatchKit 项目,开发人员可能会因为没有 WatchKit 模板而感到困惑:
没有独立的手表应用程序,手表应用程序只能作为新目标添加到现有的 iOS 应用程序中。
原因在于架构,以及手表应用程序与相关 iOS 应用程序交互的方式:
当应用程序在手表上启动时,配套的 iOS 扩展程序会自动启动。 它们协同工作,手表应用程序向佩戴者显示内容并响应交互,而 iOS 扩展程序则负责其他所有工作。 实际上,手表上没有执行任何应用程序代码:所有处理都委托给 iOS 扩展。
该模型非常类似于浏览器 <-> Web 应用程序模型,其中域逻辑在服务器端执行,客户端负责向用户显示内容并响应用户操作。
安装在设备上的 Watch App 由故事板和所有相关的静态资源组成,打包在一个包中。 此捆绑包是静态的,这意味着在运行时无法添加或更改任何资源、视图、图像等。
这种静态的客户端-服务器模型对想要将 Watch 应用程序添加到他们的重复中的 iOS 开发人员施加了一些限制,这可能是一些开发人员没有做出积极反应的主要原因之一。 另一个流行的评论是关于动画:它们根本不受支持。 模拟动画的唯一方法是将单个帧打包到手表应用程序中,然后通过按顺序显示图像来模拟动画。 好消息是,通过按顺序命名帧,您可以直接从 Interface Builder 自动化动画,尽管通过一次调用图像控制方法的代码也可以做到这一点。
然而,苹果已经宣布明年有时会发布一个新版本,支持原生应用程序,目前还没有进一步的细节。
Apple Watch 框架:快速浏览
WatchKit 不使用、继承或专门化 UIKit。 一个新的框架已经被实施、专门设计和优化,用于手表、微型显示屏和有限的硬件。 该框架仅包含 15 个类,其中 12 个是 UI 组件(标签、按钮等)。
框架公开的最重要的类是WKInterfaceController
,它是UIViewController
的 WatchKit 对应物。 所以在 iOS(和 OSX)中称为视图控制器,在 Apple Watch 中是界面控制器。
无需深入挖掘,从 Apple 开发人员的角度来看,对 UIKit 最显着的改进就是建立了一种在接口控制器之间传递数据的模式。 快速浏览初始化程序:
Swift init(context: AnyObject?) // context from pushing controller or nil
揭示了可以为接口控制器实例(在所有 API 中称为context
)提供任意对象,从而简化和标准化从一个接口控制器到另一个接口控制器的数据传递。 唯一的缺点是该对象不是泛型类型,而是一个不透明的AnyObject
,它必须在目标接口控制器的初始化程序中向下转换为预期的类型。 这可能是仍然(并且可能也希望)继续使用 Objective C 的权衡。
如果与视图控制器对应物相比,界面控制器生命周期被简化,仅包含 3 个转换:
-
init
: 当对象被实例化时调用 willActivate
: 当内容即将显示时调用didDeactivate
: 当界面刚刚被隐藏时调用
除了向用户显示内容外,界面控制器还负责:
- 处理用户交互
- 管理上下文菜单
- 协调切换活动
- 回复通知
Apple WatchKit 准备好了吗?
由于存在一些限制,手表套件可能会显示为不成熟的产品。 事实上它是。 它不支持原生的手表应用,更何况目前市场上还没有手表设备,所以开发者仍然无法测试他们的应用程序,也无法对应用程序的工作方式有真实的感受和反馈。
好的,有一个模拟器,它实际上不是一个独立的模拟器,而是作为 iOS 模拟器的外部显示器访问(通过 Hardware -> External Displays 菜单)。 但是模拟器永远不会取代真实的设备——在开发和调试过程中很好,但还不够。
WatchKit 只是一个预览版、一个测试版、一个开胃菜,它将随着每个新版本的发布而发展。 iOS 开发者已经拿到了第一个版本,让我们来玩一下,让我们尝试充分利用它。