微信号:gh_acee3e9666da

介绍:IT出版旗舰品牌,实时发布最新鲜的IT热点图书资讯,分享优质图书内容,打造与万千精英读者良好的互动平台.

WatchKit 编程入门

2015-09-16 21:06 博文视点Broadview


设计是一个非常有趣的词,有些人认为设计就是产品的外观。

但是,如果深入挖掘,设计其实关乎产品工作原理。

——乔布斯


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 的交互方式,有如下几种。

  • 数码表冠(Digital Crown):通过对表冠的操作,可以滚动列表中的各项,也可以对图片进行缩放等。数码表冠还可以扮演 Home 按钮——按一下表冠,返回到主屏幕。

  • 力感触控(Force Touch):利用一种压力敏感的触摸屏,可以感知点击(tap)和按压(press)的区别。

  • 触觉引擎(Taptic Engine):是一个触觉反馈系统,用敲击手腕的方式提醒你相关通知,当旋转数码表冠时会发生震动。


获取开发工具


开发 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):

  • 一个运行在 AppleWatch上的 WatchKit App

  • 一个运行在 iPhone上的 WatchKit Extension

注意

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 程序。

  • WatchKit App:这种类型的程序虽然运行在 Apple Watch 中,但与之交互的逻辑部分则运行在 iPhone上。

  • Glance:在程序中,给用户提供了一种查看重要信息的补充方法。Glance 不支持用户交互——点击 glance 将启动 WatchKit App。

  • Notification:显示从 iPhone 接收到的通知(包括本地通知和远程通知);程序可以定制通知的界面。


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:这个 iOS App 是WatchKit App的容器(container)。

  • HelloAppleWatch WatchKit Extension:运行在 iPhone中的 WatchKit Extension。

  • HelloAppleWatch WatchKit App:运行在 Apple Watch中的 WatchKit App。


在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 生命周期的方法:

  • init:用来初始化 Interface Controller 对象。需要注意的是 Xcode 默认不会创建出这个方法。

  • awakeWithContext:当 Interface Controller 首次显示的时候会调用该方法。它主要用于对象的初始化、UI 的更新等。

  • willActivate:当用户界面展现给用户时,该方法会被调用。它主要用于用户界面更新、时间配置等。

  • didDeactivate:当用户想要退出程序,停止 Apple Watch 的交互时,会调用该方法。它用于资源的清理、数据的保存等。


修改 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 更多文章 【看点】“数据飞轮”如何助传统企业在互联网+时代,保持基业长青(1) 你需要多久才能变成一个傻瓜:内行 —> 外行 —>天才 【书评】两面探索,知行合一 ——《像外行一行思考,像专家一样实践》 【书摘】 越能干的人,越会迷茫——《像外行一行思考,像专家一样实践》 【看点】“数据飞轮”如何助传统企业在互联网+时代,保持基业长青(3)
猜您喜欢 [✔]熬夜的伙伴赶紧转发吧,八种水果拯救夜猫子! 【520】爱要码出来,表白99%成功率的正确打开方式...... 使用data URIs 【探讨】如何挖掘弹幕背后的情感信息价值? 你的智商够看懂这些插画吗,每幅图都让人不禁点头称赞