本文概述
去年6月在WWDC上宣布并于最近发布的Apple Watch SDK引起了很多担忧。
这只是功能有限的第一轮比赛。 Apple Watch v2将紧随其后, 但不会很快-因此, 具有远见卓识的iOS开发人员应该准备等待几个月。
开发人员的感受极为多样化。 Apple Watch SDK及其功能带来的许多限制令许多iOS开发人员感到失望。另一方面, 我们许多人都感到兴奋, 而其他人离中立位置也不太远。但是, 毕竟, 每个人显然都很高兴有一个新玩具可以玩。
引人注目的一件事是如何提及Apple Watch用户。他们不是用户或移动用户, 也不是观看用户或观看者(具有一定的创意)。他们只是穿着者。这个术语听起来有些怪异, 因为如果用户使用它(暗示他在进行交互), 那么穿戴者便会佩戴, 并且听起来像是在被动使用。当然, Apple Watch绝不是被动设备。它结合了手表的传统功能和现代技术带来的更多高级选项, 尤其是与iPhone结合使用时。不久之前, 电话开始不仅仅局限于电话, 历史还在重演。
但是, 最后, 佩戴者的名字似乎是一个明智的选择。至少在编写用户故事时, 我不必完全指定”我想…作为苹果手表用户”, 我可以将其简称为”作为佩戴者, 我想…”, 以减少歧义。
设备和UI
忽略与开发不严格相关的所有Apple Watch功能, 设计人员和开发人员必须解决的最重要问题是尺寸-实际上有2种不同的Apple Watch型号:
- 38mm屏幕, 分辨率为272×340像素
- 42mm屏幕, 分辨率为312×390像素
在两种情况下都具有视网膜显示。
毋庸置疑, iOS开发人员必须确保该应用程序在两个版本上看起来都不错。
苹果手表连接
Apple Watch通过蓝牙4.0与随附的iPhone通信, 并且还启用了NFC功能。显然, 它没有WiFi连接。尽管它可以通过iPhone系绳并同时使用WiFi和蜂窝数据连接。但是苹果公司在新闻发布会上明确表示它还具有Wi-Fi 802.11b / g。
用户互动
用户交互(或穿戴者交互, 如果需要的话)可以通过4种不同的方式发生:
- 简单的触摸:点击按钮就是一个典型的例子
- 强制触摸:点击并按住屏幕时, 通过施加更大的力度来激活。类似于在PC上单击鼠标右键, 它将显示一个上下文菜单(最多包含4个项目)
- 手势:垂直滑动即可滚动浏览, 水平滑动可在页面之间浏览, 左边缘滑动可向后浏览
- 数字表冠:用于微调滚动的硬件输入
关于用户交互, 特别是关于手势, 存在一些限制:
- 它们是预先确定的, 因此不支持自定义手势
- 不支持多点触摸, 因此无需捏合即可缩放或需要多个手指的类似手势
这是《 Apple WatchKit指南》中的上下文菜单示例。
用户界面
说到Apple Watch UI, 减小屏幕尺寸, 设计选择以及在许多情况下由于底层硬件的自然后果而带来了一些限制。我们希望其中一些会在将来的SDK版本中有所改善, 尽管无法预测也不会预测实际的变化。
第一个限制是关于如何实现用户界面的:仅通过情节提要。
苹果手表导航
WatchKit提供了两种相互排斥的方式来浏览Apple Watch应用程序的视图:
- 一种分层的导航模型, 类似于iOS中使用的模型, 在导航过程中将视图堆叠在一起
- 基于平面的模型, 用户可以通过左右滑动来在页面之间导航
不幸的是, 不可能在同一个应用程序中组合这两种导航模型。必须选择其中之一, 并在整个应用程序中使用它们。
但是, 任何接口控制器都可以提供模式接口控制器, 该模式接口控制器可以是使用页面导航模型排列的单个接口控制器, 也可以是多个接口控制器。
UI元素
有11个不同的接口组件:
- 纽扣
- 滑杆
- 图片
- 标签
- 分隔器
- 滑杆
- 开关
- 表
- 日期:自动显示当前日期或时间
- 计时器:显示倒数计时器, 并自动更新
- 组:一个或多个子组件的容器
- 地图:显示非交互式地图, 最多可以选择5个注释
版面
组组件可用于以垂直或水平布局组合Apple Watch UI元素。元素将根据其大小自动布局。鉴于可以嵌套组, 因此此处具有一定程度的灵活性。
不幸的是, 自动布局不可用。但是, 考虑到与iOS相比, 用户界面要简单得多, 因此损失可能不大。
对于列表, 表组件使用单列模型创建和管理内容, 就像UITableView一样。但是, 它没有使用委托模式-通过先指定行数, 然后在for循环中初始化每行的内容, 将数据源直接提供给表。值得肯定的是, 仍然可以使用自定义表格行(即iOS行话中的单元格)
扫视
概览是只读, 单页和不可滚动的视图, 用于显示及时且相关的应用程序特定数据的快照。除轻击事件外, 不允许用户交互。轻按一下即可启动应用程序, 可以选择提供上下文, 以使该应用程序显示特定的界面控制器。
例如, Apple Watch天气应用程序可以使用Glance显示当前温度, 位置等。通过点击它, 该应用程序将打开, 显示更多详细信息。
这是官方Apple WatchKit指南中的示例Glance。
Apple Watch通知
通知类型有2种:短视和长视。
短视通知用于提醒佩戴者发生了某些事情, 并且当手腕放下时会自动将其关闭。布局非常简单, 由应用程序图标, 应用程序名称和通知标题组成。
腕部抬高一段时间, 或显式轻按短视通知, 将其转变为长视通知。此类通知提供更多详细信息, 并通过可自定义的按钮支持用户交互。这些按钮可以将通知发送到应用程序。与短通知不同, 用户必须通过点击自动显示在视图底部的按钮来明确取消长看通知。
可在此处找到有关使用Apple Watch Notifications的更多信息。
发展历程
建筑
下载支持WatchKit的Xcode版本(当前为6.2 beta版), 并尝试在不阅读任何文档的情况下开始使用WatchKit项目, 由于没有WatchKit模板, 开发人员可能会感到困惑:
没有独立的监视应用程序, 并且只能将Watch App作为新目标添加到现有iOS应用程序。
这样做的原因取决于架构, 以及手表应用程序与相关iOS应用程序交互的方式:
在手表上启动应用程序后, 会自动启动随附的iOS扩展程序。它们都协同工作, 手表应用程序向佩戴者显示内容并响应交互, 而iOS扩展程序则在做其他所有事情。实际上, 手表上没有执行任何应用程序代码:所有处理都委托给iOS扩展。
此模型非常类似于浏览器<-> Web应用程序模型, 在该模型中, 域逻辑在服务器端执行, 而客户端端则负责向用户显示内容并响应用户的操作。
安装在设备上的Watch App由情节提要和所有相关的静态资源组成, 打包在一起。该捆绑包是静态的, 这意味着在运行时无法添加或更改任何资源, 视图, 图像等。
这种静态的客户端-服务器模型对想要将Watch应用程序添加到其应用程序中的iOS开发人员施加了一些限制, 这可能是某些开发人员没有做出积极反应的主要原因之一。另一个流行的说法是关于动画的:它们根本不受支持。模仿动画的唯一方法是将各个帧打包到watch应用程序中, 然后通过按顺序显示图像来模拟动画。好消息是, 通过顺序命名帧, 你可以直接从Interface Builder中自动执行动画, 尽管只需调用图像控制方法即可从代码中完成动画。
然而, 苹果公司已经宣布明年某个时候会发布一个新版本, 它支持本机应用程序, 目前尚无更多细节。
Apple Watch框架:快速浏览
WatchKit不会使用, 继承或专门使用UIKit。针对手表, 微小的显示屏和有限的硬件, 已经实施, 专门设计和优化了一个新框架。该框架仅包含15个类, 其中12个是UI组件(标签, 按钮等)。
该框架公开的最重要的类是WKInterfaceController, 它是UIViewController的WatchKit的对应版本。因此, 在iOS(和OSX)中称为视图控制器, 在Apple Watch中称为接口控制器。
从苹果开发人员的角度来看, 对UIKit的最明显的改进是在界面控制器之间传递数据的模式。快速了解初始化器:
Swift init(context:AnyObject?)//推送控制器或nil的上下文
揭示了可以为接口控制器实例(在所有API中称为上下文)提供任意对象, 从而简化和标准化了从一个接口控制器到另一个接口控制器的数据传递。唯一的缺点是对象不是通用类型, 而是不透明的AnyObject, 必须将其向下转换为目标接口控制器的初始化程序中的预期类型。对于仍然(并且可能还想)继续使用Objective C, 这可能是一个折衷。
如果将其与仅由3个过渡组成的视图控制器进行比较, 则可以简化接口控制器的生命周期:
- init:实例化对象时调用
- willActivate:将要显示内容时调用
- didDeactivate:仅在隐藏接口时调用
除了向用户显示内容外, 界面控制器还负责:
- 处理用户互动
- 管理上下文菜单
- 协调交接活动
- 回应通知
Apple WatchKit准备好了吗?
由于存在一些限制, 因此手表套件可能会显得不成熟。实际上是这样。它不支持本地手表应用程序, 更不用说市场上还没有手表设备, 因此开发人员仍然无法测试他们的应用程序, 并且对应用程序的工作方式有真实的感觉和反馈。
好的, 有一个模拟器, 它实际上不是一个独立的模拟器, 但可以作为iOS模拟器的外部显示器(通过”硬件->外部显示器”菜单访问)。但是, 模拟器永远不会取代真实的设备-在开发和调试过程中表现良好, 但还不够。
WatchKit只是一个预览版, 一个Beta版, 一个开胃菜, 它将随着每个新版本的发布而发展。 iOS开发人员已经拥有了第一个版本, 让我们一起使用它, 并尝试充分利用它。
评论前必须登录!
注册