1、 移动开发系列 基于 Swift 的 Apple Watch 开发教程 王永超 编著 Publishing House of Electronics Industry 北京BEIJING 内 容 简 介 Apple Watch 是苹果公司推出的智能手表,其系统为 watchOS,Swift 是苹果公司新推出的开发语言。本书介绍基于 Swift 3 进行 watchOS 3 应用的开发,对 Swift 3 基础、watchOS 3 基础、多媒体、游戏、传感器、GPS、与 iPhone 交互、健康监测等多项手表专属内容进行全面阐述和案例学习,可以更好地引导和帮助读者掌握新语言 Swift 和学习
2、Apple Watch 应用开发。本书适合 iOS 开发、Swift 开发、Apple Watch 开发和学习,以及 Apple watch 爱好等众多读者。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 基于 Swift 的 Apple Watch 开发教程/王永超编著.北京:电子工业出版社,2017.9(移动开发系列)ISBN 978-7-121-32377-5.基 .王 .程序语言程序设计教材 .TP312 中国版本图书馆 CIP 数据核字(2017)第 183889 号 策划编辑:张 迪()责任编辑:张 迪 印 刷:装 订:出版发
3、行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编 100036 开 本:7101 000 1/16 印张:9.5 字数:243 千字 版 次:2017 年 9 月第 1 版 印 次:2017 年 9 月第 1 次印刷 定 价:39.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:(010)88254469;。前 言 Apple Watch 是苹果(Apple)公司推出的一款比较成熟的智能穿戴电子产品,具有运动
4、追踪、健康监测、消息推送、多媒体、游戏、GPS 定位等多种功能,并支持第三方应用,如今已有较大市场占有率。Apple Watch 需要配合 iPhone 手机使用,通过经配对的 iPhone 访问应用商店进行第三方应用的下载和安装,Watch 上的应用都会包括一个手表端运行包和手机端运行包,分别运行在手表和手机上,并且两者之间可以交换数据。Apple Watch 之所以被称为“智能手表”,是因为其上运行着智能操作系统watchOS。watchOS 之所以被称为“智能操作系统”,笔者认为不是因为其可以连接手机并接受手机控制,而是因为其拥有应用程序的概念,为开发者提供了应用程序编程接口(API)、
5、开发语言和开发编译工具 Xcode,并且允许开发者开发、部署和运行第三方应用程序(App)。watchOS 1 的应用运行在 iPhone 上并把运行结果发送到 watch 上进行显示。从 watchOS 2 开始,应用直接安装和运行在手表上,称为本地应用,又称原生应用(Native App),大幅提高了运行效率。watchOS 允许开发者使用两种语言开发应用,分别是原有的 Objective-C 和新语言 Swift。Swift 是苹果公司推出的新开发语言,Swift 已经更新了多个版本,从Swift 3 开始,Cocoa 类名去掉了 Objective-C 中的 NS 开头,直接定义为含义
6、名称,例如 NSString 改为 String,NSTimer 改为 Timer,等等,并且类的成员也都有少量变化。Swift 也可以调用已有的 Objective-C 类进行混合编译。为了更好地推广Swift,苹果公司已经将 Swift 开源化,允许开发者直接基于 C 语言开发 Swift 源码。Swift 具有语法简洁、易读、易写的特点,本书采用 Swift 开发 watchOS 应用,也为读者提供一个学习和使用 Swift 参考资料。本书包括 8 章。第 1 章概述,介绍 watchOS 项目的结构组成,并列举了已经提供部分和完全支持的框架。第 2 章 Swift 编程基础,Swift
7、 更新到第 3 个版本已经基本稳定,该部分介绍了 Swift 的基本语法、函数调用、常用数据结构和类,为后续开发做好准备。第 3 章 watchOS 基础,开始正式进入 watchOS 应用的开发,基于 Swift 的 Apple Watch 开发教程 IV 介绍了页面和常用控件。第 4 章 watchOS 高级进阶,是第 3 章 watchOS 基础开发的进一步深入,主要涉及按压交互和组件交互,具体内容包括 Force Touch 菜单、振动引擎、表盘功能栏、提醒、后台刷新任务、URL 后台下载、Dock 截图、Apple Pay、通知等多种高级功能。第 5 章多媒体和游戏引擎,多媒体包括录
8、音、连接蓝牙耳机播放音频、视频播放和喇叭外放,游戏引擎包括 2D 引擎 SpriteKit 和 3D引擎 SceneKit,这里还结合游戏讲解了手势交互。第 6 章运动传感器和 GPS,Apple Watch 已经明确支持加速计、陀螺仪两种主要运动传感器,同时也支持 GPS 定位。第 7 章与 iPhone 交互,Apple Watch 不是 iPhone 的附属部件,而是运行独立操作系统的独立计算机,与 iPhone 之间进行平等的数据交换,watchOS 与配对的 iOS交互是通过 WatchConnectivity 框架实现的,包括覆盖式后台传输、队列式后台传输、文件传输、消息传输、消息
9、数据传输、功能栏传输等多个交互类型。第 8 章健康,Apple Watch 提供强大和全面的健康监测功能,如心率、步数、活动能量消耗等,同时会将监测到的数据发送到 iPhone 上的健康库中。上述的每一个部分在详细讲解的基础上,均提供了案例代码。以 Apple Watch 为代表的智能穿戴产品还远远不如手机那么普及,存在巨大的市场增长空间,同时 Apple Watch 的应用和功能的开发还处在挖掘和探索阶段,而本书以此为契机,为广大开发者和其他兴趣读者学习和开发 Apple Watch 应用提供详细、系统的中文学习参考资料。笔者也衷心希望广大开发者早日能创造出几款杀手级应用。目 录 第 1 章
10、 概述1 1.1 watchOS 项目结构 1 1.2 建立 watchOS App 实例 2 1.3 watchOS 3 框架支持 4 1.4 【案例 1】watchOS 3 项目结构 5 第 2 章 Swift 3 编程基础8 2.1 基本语法8 2.1.1 变量和常量8 2.1.2 guard let 和 if let10 2.1.3 字符串 String11 2.1.4 数组13 2.1.5 枚举14 2.1.6 for 循环 15 2.1.7 switch/case 多条件判断15 2.1.8 任意类 Any 16 2.2 函数16 2.2.1 声明和调用16 2.2.2 回调函数1
11、7 2.2.3 异常抛出和捕捉18 2.3 常用数据结构和类18 2.3.1 字典 Dctionary18 2.3.2 日期 Date21 2.3.3 计时器 Timer23 2.3.4 文件存储24 2.4 Objective-C 混合编程 25 第 3 章 watchOS 基础开发26 3.1 页面控件26 3.1.1 页面生命周期26 基于 Swift 的 Apple Watch 开发教程 VI 3.1.2 页面关系26 3.2 常用控件27 3.2.1 表盘布局和 Group27 3.2.2 图片28 3.2.3 按钮28 3.2.4 开关28 3.2.5 滑动条29 3.2.6 选择
12、器29 3.2.7 表格30 3.3 应用图标32 3.4 【案例 2】宠物乐园33 第 4 章 WatchOS 高级进阶 40 4.1 Force Touch 菜单40 4.2 振动引擎40 4.3 表盘功能栏41 4.3.1 功能栏简介41 4.3.2 功能栏刷新42 4.3.3 Watch 表盘图库示例43 4.3.4 家族和模板44 4.3.5 家族示意图45 4.3.6 模板示意图46 4.3.7 功能栏图片尺寸50 4.4 提醒51 4.5 后台刷新任务52 4.6 URL 后台下载53 4.7 Dock 截图53 4.8 Apple Pay 支付54 4.9 通知54 4.10
13、【案例 3】十二生肖55 4.11 【案例 4】后台刷新任务和 URL 下载64 第 5 章 多媒体和游戏引擎69 5.1 多媒体69 目 录 VII 5.1.1 录音69 5.1.2 无线播放音频69 5.1.3 视频播放和喇叭外放70 5.2 游戏引擎70 5.2.1 2D 游戏引擎控件 70 5.2.2 创建手表游戏项目71 5.2.3 3D 游戏引擎控件 71 5.2.4 手势识别71 5.3 【案例 5】录音和音频视频播放72 5.4 【案例 6】2D 游戏74 5.5 【案例 7】3D 游戏80 第 6 章 运动传感器和 GPS 92 6.1 运动传感器92 6.2 传感器记录94
14、 6.3 运动姿态识别94 6.4 GPS 和定位94 6.5 地图控件95 6.6 【案例 8】运动传感器95 6.7 【案例 9】GPS 定位105 第 7 章 与 iPhone 交互109 7.1 WatchConnectivity 框架109 7.2 配置 WCSession 109 7.3 连接状态109 7.3.1 判断连接状态109 7.3.2 连接状态回调110 7.4 数据传输110 7.4.1 覆盖式后台传输110 7.4.2 队列式后台传输110 7.4.3 文件传输111 7.4.4 消息传输111 7.4.5 消息数据传输111 7.4.6 功能栏传输112 基于 S
15、wift 的 Apple Watch 开发教程 VIII 7.5 【案例 10】与 iOS 交互112 第 8 章 健康120 8.1 健康存储的数据120 8.1.1 人体特征数据120 8.1.2 样本数据121 8.1.3 样本数据类型121 8.1.4 数据单位124 8.1.5 病历124 8.2 监测数据124 8.2.1 加载健康框架124 8.2.2 申请权限125 8.2.3 后台模式125 8.2.4 监测体能训练126 8.2.5 活动类型129 8.2.6 存储到健康库131 8.3 【案例 11】健身监测和体能训练132 第 1 章 概 述 1.1 watchOS 项
16、目结构 如今的 Apple Watch App 都要求是原生应用(native app),原生应用即是高于watchOS 2 及以上的版本,并作为一个完整的应用包在 Apple Watch 上独立运行。本书介绍的手表操作系统版本是 watchOS 3,使用的语言版本是 Swift 3,如图 1-1所示是 watchOS 3 App 的结构图。图 1-1 watchOS 3 App 结构图 从图 1-1 中可以看出,Watch App 作为一个独立应用在 watchOS 上运行,wachOS2/3 的 Xcode 项目包含 3 个部分,分别是 iOS App 包、Watch App 包和WatchKit Extention 包。其中,iOS App 包负责 iPhone 端所有运行内容,Watch App包包含界面编辑和手表应用整体参数,WatchKit Extention 包包括 watch 端运行的代码及资源。WatchKit Extension 包含在 Watch App 包中,而手表端 App 和手机端App 通过操作系统(watchOS 和 iOS)进行交互。基于 Swift