基于Swift 的Apple Watch 开发教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-20 12:25:58

点击下载

作者:王永超

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

基于Swift 的Apple Watch 开发教程

基于Swift 的Apple Watch 开发教程试读:

前言

Apple Watch是苹果(Apple)公司推出的一款比较成熟的智能穿戴电子产品,具有运动追踪、健康监测、消息推送、多媒体、游戏、GPS定位等多种功能,并支持第三方应用,如今已有较大市场占有率。Apple Watch需要配合iPhone手机使用,通过经配对的iPhone访问应用商店进行第三方应用的下载和安装,Watch上的应用都会包括一个手表端运行包和手机端运行包,分别运行在手表和手机上,并且两者之间可以交换数据。

Apple Watch之所以被称为“智能手表”,是因为其上运行着智能操作系统watchOS。watchOS之所以被称为“智能操作系统”,笔者认为不是因为其可以连接手机并接受手机控制,而是因为其拥有应用程序的概念,为开发者提供了应用程序编程接口(API)、开发语言和开发编译工具Xcode,并且允许开发者开发、部署和运行第三方应用程序(App)。watchOS 1的应用运行在iPhone上并把运行结果发送到watch上进行显示。从watchOS 2开始,应用直接安装和运行在手表上,称为本地应用,又称原生应用(Native App),大幅提高了运行效率。

watchOS允许开发者使用两种语言开发应用,分别是原有的Objective-C和新语言Swift。Swift是苹果公司推出的新开发语言,Swift已经更新了多个版本,从Swift 3开始,Cocoa类名去掉了Objective-C中的NS开头,直接定义为含义名称,例如NSString改为String,NSTimer改为Timer,等等,并且类的成员也都有少量变化。Swift也可以调用已有的Objective-C类进行混合编译。为了更好地推广Swift,苹果公司已经将Swift开源化,允许开发者直接基于C语言开发Swift源码。Swift具有语法简洁、易读、易写的特点,本书采用Swift开发watchOS应用,也为读者提供一个学习和使用Swift参考资料。

本书包括8章。第1章概述,介绍watchOS项目的结构组成,并列举了已经提供部分和完全支持的框架。第2章Swift编程基础,Swift更新到第3个版本已经基本稳定,该部分介绍了Swift的基本语法、函数调用、常用数据结构和类,为后续开发做好准备。第3章watchOS基础,开始正式进入watchOS应用的开发,介绍了页面和常用控件。第4章watchOS高级进阶,是第3章watchOS基础开发的进一步深入,主要涉及按压交互和组件交互,具体内容包括Force Touch菜单、振动引擎、表盘功能栏、提醒、后台刷新任务、URL后台下载、Dock截图、Apple Pay、通知等多种高级功能。第5章多媒体和游戏引擎,多媒体包括录音、连接蓝牙耳机播放音频、视频播放和喇叭外放,游戏引擎包括2D引擎SpriteKit和3D引擎SceneKit,这里还结合游戏讲解了手势交互。第6章运动传感器和GPS,Apple Watch已经明确支持加速计、陀螺仪两种主要运动传感器,同时也支持GPS定位。第7章与iPhone交互,Apple Watch不是iPhone的附属部件,而是运行独立操作系统的独立计算机,与iPhone之间进行平等的数据交换,watchOS与配对的iOS交互是通过WatchConnectivity框架实现的,包括覆盖式后台传输、队列式后台传输、文件传输、消息传输、消息数据传输、功能栏传输等多个交互类型。第8章健康,Apple Watch提供强大和全面的健康监测功能,如心率、步数、活动能量消耗等,同时会将监测到的数据发送到iPhone上的健康库中。上述的每一个部分在详细讲解的基础上,均提供了案例代码。

以Apple Watch为代表的智能穿戴产品还远远不如手机那么普及,存在巨大的市场增长空间,同时Apple Watch的应用和功能的开发还处在挖掘和探索阶段,而本书以此为契机,为广大开发者和其他兴趣读者学习和开发Apple Watch应用提供详细、系统的中文学习参考资料。笔者也衷心希望广大开发者早日能创造出几款杀手级应用。第1章概述1.1 watchOS项目结构

如今的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)进行交互。1.2 建立watchOS App实例(1)打开xcode,新建项目,进入watchOS下的Application,选择“iOS App with WatchKit App”,如图1-2所示。图1-2 工程选择对话框(2)单击Next按钮,设置项目名称为“NewApp”(其中tinghe17为笔者常用id,与开发者账号有关的内容,如证书、签名、id等内容不在本书范围之内),选择语言为Swift,为了全面了解,下面选择通知场景(Notifaction Scene)、表盘功能栏(Complication),如图1-3所示。图1-3 项目参数对话框(3)单击Next按钮,选择保存路径(英文),项目建立成功。iOS App包的名称为NewApp,手表端包会自动起名字,即添加了后缀“WatchKit App”和“WatchKit Extension”。整个NewApp项目包含3个相应的TARGETS。3个TARGETS的Bundle Identifier存在前后的从属关系,依次为tinghe17.NewApp、tinghe17.NewApp.watchkitapp和tinghe17.NewApp.watchkitapp.watchkitextension,如图1-4所示。图1-4 项目结构图(4)在项目列表中选择NewApp WatchKit App中的interface.storyboard,即可从主视图看到手表界面详细结构,包括一个应用运行时的界面(Interface Countroller)、一个静态通知界面(Static Interface)和一个由前者变化而显示的动态通知界面(Dynamic Interface),如图1-5所示。图1-5 界面结构图(5)选择调试项,包括默认的手机端NewApp和手表端的WatchKit App、通知、与表盘功能栏。调试手表应用时选择手表端的WatchKit App,并且选择适配的Apple Watch真机,如图1-6所示。图1-6 调试选项1.3 watchOS 3框架支持

watchOS 3支持框架framework可以分为两类:一类是手表系统专属框架;另一类是iOS系统原有框架。其中,手表对于某些iOS系统原有框架是部分支持,同时某些原有框架加入了手表特有部分。本书重点介绍手表有关的框架及其内容。watchOS 3支持的框架如表1-1所示。表1-1 watchOS 3的框架支持1.4 【案例1】watchOS 3项目结构

watchOS 3的手表端扩展包Extension包括3个文件:

·页面,InterfaceController.swift;

·扩展代理,ExtensionDelegate.swift;

·通知界面,NotificationController.swift;

·表盘功能栏,ComplicationController.swift。(1)页面控件InterfaceController继承手表页面控件类WKInterfaceController,默认生成三个函数,分别在不同的时机由系统调用:初始化时调用awake(withContext context:Any?),页面显示时调用willActivate(),不显示时调用didDeactivate()。(2)扩展代理ExtensionDelegate继承手表扩展代理WKExtensionDelegate,之所以叫“扩展代理”而不是“代理”,是因为该代理是WatchKit Extention的代理,而不是WatchKit App的代理。默认包含涉及手表应用声明周期:应用启动完成后初始化时调用applicationDidFinishLaunching(),应用激活前台时调用applicationDidBecomeActive(),应用失活时调用applicationWillResignActive(),应用被系统后台启动时调用handle(_backgroundTasks:Set<WKRefreshBackgroundTask>)。(3)通知页面控件NotificationController是在手表接到通知时单击通知按钮显示的页面。通知页面的声明周期与普通页面相似(同样包括初始化、激活、失活),只是多了一个接到通知的处理函数didReceive(),默认该函数是标注不用状态,当使要显示通知页面动态显示内容时才须要调用该函数。(4)表盘功能栏控件ComplicationController负责表盘功能栏的设置,包括在iPhone Watch应用里表盘图库里的示例显示。ComplicationController包含了多个函数,分别对应显示功能栏的不同时机,其中最常用的直接设置表盘功能栏显示普通状态的函数是getCurrentTimelineEntry(),设置iPhone Watch里的功能栏示例的函数是getLocalizableSampleTemplate()。第2章Swift 3编程基础

Swift作为一种新的编程语言,简洁易用,受到开发者的广泛喜爱。迄今为止Apple公司已经发布了3个Swift版本。本书在讲解手表开发之前,先介绍一下Swift 3语言的基本语法及其新特点。2.1 基本语法2.1.1 变量和常量

1.普通变量

普通变量使用var声明,都有一定的初始值,例如:

2.可空变量

可空变量是Swift特有的变量类型,其值可以为空(nil),而使用上节只用var声明的普通变量必须有一定的非空值。

访问变量的值可以用!,!要求变量访问时不能是空,必须有值。

如果可空变量是类的实例object,调用时可以使用!和?,!要求object不能是空,?表示可以为空,为空时不执行。

3.常量

常量用let声明,在之后的使用过程中其值不能变化。

如果后面赋值a=8就会报错

常量在后续使用中不使用!和?。

4.数据转换

Swift对数据格式要求很严格,所有数据转换都要求是明式的,在算数计算时要特别注意格式转换。

Swift中还有一种特别的数据类型转换形式,即上下位类型转换,关键字为as,如将上位的格式转换为下位的格式:

上述语句将父类变量father:Father转换为子类变量son:Son。

如果father为可空变量Father?,那么可添加“as!”转换为不可空变量,如:

son为Son类型。

也可使用“as?”转换为可空变量:

son为Son?类型。2.1.2 guard let和if let“guard”的意思就是防护,顾名思义,作用就是确保条件判断为真,避免条件判断为假时的运行风险。guard与else一起使用,如果guard后的语句判断为假,则执行else语句,else语句必须为截断语句,如fatalError()、return等,防止继续执行代码出现错误。

guard一般和let、else一起使用,声明一个临时变量并对该变量赋值,如果赋值不为空,则let声明语句为真,则该临时变量可供后续代码使用;如果赋值为空,let声明语句为假,则进入else模块语句,截断继续代码执行,而guard的后续代码则不会被执行,let声明的临时变量也不会使用了。一个guard语句可以同时多个let临时变量,使用逗号将let声明隔开即可。因为只有在可能是空的情况才需要guard,所以let赋值语句等号右边的变量/常量必须为可空类型(?)的。

至于if let{}没有else,如果let语句为真,即let临时变量赋值非空,那么就执行后面的{}模块。2.1.3 字符串String

字符串String直接使用双引号,不用@。

1.拼接

字符串拼接方式比较多,如符号“+”、插入方式“\()”、追加append。

2.长度

因为String兼容多种编码格式,所以获取长度时需要告知编码格式。另外,获取长度前也可以先获取字符顺序集合,再获取字符数量。

3.包含判断

判断字符串是否包含另一个字符串,也可判断前缀或后缀是否是另一个字符串,返回布尔值。

4.索引Index

要访问字符串的字符和子字符串,需要用到字符索引String.Index。字符索引代表字符在字符串中的位置编号,常用的是首位startIndex、末尾endIndex、偏移offset和索引范围Range。范围Range的构建格式为Range(index0..<index1),表示区间[index0,index1],包括两个端点。

5.处理字符和子字符串

处理子字符串要通过索引String.Index来进行。

6.分组

字符串可以依照特定字符串分割成字符串数组。2.1.4 数组

数组在应用开发时是必不可少的,本书介绍一下Swift数组的基本语法。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载