设计是一个非常有趣的词,有些人认为设计就是产品的外观。
但是,如果深入挖掘,设计其实关乎产品工作原理。
——乔布斯
AppleWatch 是由苹果公司创造的智能手表,TimCook 于 2014 年 9月9日在苹果公司官方发布会上宣布了这一消息。AppleWatch 是继 iPhone 和 iPad 之后苹果公司的又一力作,苹果公司希望借此改变可穿戴设备的规则(就像 iPhone 改变了智能手机,iPad 改变了平板一样)。
小编今天带大家了解 AppleWatch 程序的架构,以及 AppleWatch 是如何与iOS 程序联系起来的。最重要的是,你将写一个简单的 AppleWatch 程序,并将该程序安装至模拟器中。
Apple Watch 的规格
AppleWatch 使用了苹果公司自家定制的芯片(称为 S1)。AppleWatch 的背面是一个心律传感器,这是安装在陶瓷盖上的一组 LED 和光电二极管。除此之外,还有加速度传感器、WiFi、低功耗蓝牙(BLE)和 GPS。它使用磁力充电器进行无线充电(结合了来自MacBook 和 MacBook Pro 使用的 Magsafe 技术),通过磁力吸附在背面,然后进行感应充电。
目前 AppleWatch 有两种尺寸:
38mm Watch(小):分辨率为 272 像素 ×340 像素
42mm Watch(大):分辨率为 312 像素×390 像素
Apple Watch 的交互方式,有如下几种。
获取开发工具
开发 AppleWatch 应用程序,需要 Xcode 6.3 或者更新的版本,可以从 MacAppStore 中通过下载获取。
Xcode 6.3 本文中的示例代码是用 Xcode 6.3 编写并测试的。
Xcode6.3 包含了WatchKit,该框架用来创建 AppleWatch 程序。另外,Xcode6.3中还有 AppleWatch 模拟器,通过该模拟器,你可以不用真实设备就能测试 AppleWatch 程序。
WatchKit 是什么? WatchKit 是一个框架(类似 iOS 开发中的一些框架,如 CoreLocation 或 MapKit 等),该框架包含了创建 Apple Watch 程序需要用到的所有类。
WatchKit 程序架构
要运行第三方的应用程序,AppleWatch 还需要 iPhone。一个AppleWatch 程序由两部分组成(技术上称为 bundle):
注意 Apple Watch 兼容的设备有:iPhone5、iPhone 5c、iPhone 5s、iPhone 6 和 iPhone 6 Plus,这些设备需要运行 iOS 8.3 或者更新的版本。
上图显示了两个 bundle 之间的关系。这两个 bundle 利用低功耗的蓝牙进行通信。WatchKit 框架封装了所有通信细节,这对于开发者来说是完全透明的。
WatchKitApp 仅包含创建 AppleWatch 程序所需的 storyboard 和相关资源;管理与 AppleWatch 程序交互的代码则位于 WatchKitExtension。
注意 WatchKit App 不包含任何源代码文件。所有代码的执行都由位于 iPhone中的 WatchKit Exten-sion 负责。
Apple Watch 程序的安装
由于 WatchKitApp 和 WatchKitExtension 之间是紧密结合的,所以这两个 bundle被打包在单个 iOS 程序 bundle 中。因此,要开发一个 AppleWatch程序,首先需要开发一个 iPhone 程序。
当用户安装包含有 WatchKit 和 WatchKitExtension 时,如果有成功配对可用的AppleWatch 时,会提示用户安装 WatchKitApp。当 WatchKitApp 成功安装至 AppleWatch 后,就可以直接在 AppleWatch主屏幕上启动它。
Apple Watch 与 iPhone 之间的交互
上图显示了WatchKitApp(运行在 AppleWatch中)是如何与 WatchKitExtension(运行在 iPhone 中)交互的。无论用户什么时候操作 WatchKitApp,所有的交互都是由WatchKitExtension 通过 WatchKit 框架进行处理的。WatchKit 框架使用低功耗蓝牙在 AppleWatch 和 iPhone 之间进行通信。作为 AppleWatch 开发者,不用考虑背后的实际运行原理。
Containing iOS App 通信
只有当 WatchKitApp 运行的时候,WatchKitExtension 才会运行,WatchKitExtension不支持后台运行。因此针对比较耗时的任务(例如获取位置数据或访问 Web 服务),建议向 containing iOS App发送请求,让 containing iOS App 执行相关任务。通过配置containing iOS App,就能在后台执行这些任务。
注意 在第2 章中将介绍如何将执行耗时任务的请求从 WatchKit Extension中发送到 containing iOSApp中。
Apple Watch 程序的类型
此次发布的 WatchKit,可以开发三种类型的 Apple Watch 程序。
Hello, World!
现在已经学习了全部的基础知识,接下来是时候动手试一试了!闲话少说,首先确保已经安装了Xcode,然后就开始创建你的第一个Apple Watch 程序吧!
创建一个 iPhone 工程创建 Apple Watch 程序的第一步就是先创建一个 iPhone 程序。为此,按照如下步骤执行。
1 启动 Xcode,并选择 Single View Application 模板。
2 单击 Next。
3 将工程按照如下方法进行命名。
Product Name:HelloAppleWatch。
Organization Name:输入你的姓名或者公司名称。
Organization Identifier:一般来说,这是公司的反转域名(例如 com.example等)。Bundle Identifier 的格式是将组织名称和产品名称连接起来得到的一个字符串。如果要将此程序在 App Store上架,其 Bundle Identifier 必须是唯一的。
Language:Swift
Devices:iPhone
4 单击 Next。
5 选择工程的存放路径,然后单击 Create。
工程创建成功之后,看到的 Xcode 界面如下图。
至此,描述了如何创建一个 iPhone 程序。在接下来的章节中,会学习到如何将WatchKit Extension 和 WatchKit App 添加到工程中。
添加一个 WatchKit App Target
要将 WatchKit Extension 和 WatchKit App 添加到工程中,需要按照下面的步骤添加一个 target。
1.在 Xcode 中,选择 File|New|Target...。
2.在左侧 iOS 中,选择 Apple Watch,然后选择右侧的 WatchKitApp 模板,并单击 Next。
3.会弹出如下图所示的一个对话框,大多数内容无须改动,只需记得不要勾选Include Notification Scene,这样可以让 WatchKit 工程尽可能简单,最后单击Finish。
接下来,将提示你激活一个新的 scheme:刚刚创建的 HelloAppleWatch WatchKitApp。激活该 scheme,有利于后续更加方便地调试 AppleWatch程序。
4.单击 Activate。
至此,Xcode 工程看起来是这样的。
特别留意一下图中被高亮显示的三个组:
在HelloAppleWatch WatchKit App组中包含了一个Interface.storyboard文件。这是一个 storyboard 文件,其中包含了你的 Apple Watch App 的用户界面。另外,在HelloAppleWatch WatchKit Extension 组中,包含了一个InterfaceController.swift文件,当用户与 Apple Watch 程序交互时,会执行这个文件中的代码。
检查 Storyboard
下 面 我 们 来 看 看 HelloAppleWatch WatchKit App 组中的 Interface.storyboard 文件。选中该文件,会自动使用 Storyboard Editor 打开这个文件。此时,文件中包含了唯一的一个Interface Controller,这类似于iPhone程序中的ViewController。当用户在AppleWatch中启动程序时,main storyboard中的初始化Interface Controller会被加载。
当选中Interface Controller时,可以看到在Identity Inspector窗口中的Class属性字段已经连接到InterfaceController类上。
WatchKit App 的生命周期
InterfaceController类存储在名为InterfaceController.swift的文件中。该文件位于HelloAppleWatch WatchKit Extension组中InterfaceController类的内容如下。
InterfaceController 类继承自WKInterfaceController 类。在继承 WKInterfaceController 类时,可以重写许多处理 Interface Controller 生命周期的方法:
修改 Interface Controller至此,我们已经讨论了工程中的一些细节,下面我们做一些比较直观的事情!找到Interface.storyboard 文件的 Interface Controller,并添加一个 Label 控件(从 Object Library)进去。
双击 Label 控件,输入 Hello, World!
在模拟器上运行程序
至此,是时候在iPhone模拟器上测试程序了。在 Xcode中,首先需要将scheme设置为HelloAppleWatch WatchKit App。同时,确保选中iPhone6模拟器。完成这些操作之后,按下Command-R 将程序安装到iPhone模拟器中。
当iPhone模拟器启动完成之后,你的iPhone程序将被安装至iPhone6模拟器中,但是还不会启动运行。因为当前选择的是 HelloAppleWatch WatchKit App scheme,所以只有 WatchKit App 运行起来。如果没有看到 Apple Watch 模拟器,可以通过Hardware|External Displays 选一个 watch 尺寸。
现在应该可以看到 Apple Watch 模拟器把程序运行起来了。
小结
本文中,学习了开发AppleWatch的基本知识。首先了解了AppleWatch的规格,然后学习了第三方程序的架构。最重要的是,AppleWatch 程序的大量处理工作都是在iPhone中完成的。之所以这样做,是因为这样可以减少AppleWatch的工作负荷,大幅度提升watch的电池性能,电池的性能是穿戴设备非常致命的一个难题。
还写了你的第一个AppleWatch 程序,并在 AppleWatch 模拟器上进行了测试。
若要学习更多不同的控件视图(这些控件视图可以用来构建 AppleWatch程序的UI,包括containingiOSApp和AppleWatch程序之间如何通信等主题)请见《从iOS到Apple Watch:用WatchKit创建新型可穿戴应用》
本文分享自 博文视点Broadview 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!