Apple Watch 开发介绍(一)WatchKit App 架构

WatchKit app和WatchKit extension一起实现了app的界面。当用户在Apple Watch中操作时,WatchKit app从storyboards中选择合适的场景。比如,如果用户查看glance,它就会选择glance场景。在选择场景时,WatchKit通知对应的iPhone启动WatchKit extension来创建管理场景的对象。当常见完全配置好之后,它会显示在Apple Watch上。这种在WatchKit app和WatchKit extension中传递数据的操作完全是在幕后操作的。

下图显示了WatchKit app和WatchKit extension间的通讯。

管理场景:界面控制器

每个场景是由一个界面控制器对象来管理的, 它是WKInterfaceController类的实例。由于一次只在屏幕上显示一个界面,app展现新界面时会根据用户操作切换界面控制器。App可以模态界面。切换的类型也决定了界面如何展示。

注意:Glance和自定义通知界面使用特殊的界面控制器,它们和其他界面不同。

WatchKit App生命周期

用户的操作启动了app也决定了它的生命周期。用户从主屏启动app,查看glance或者查看通知界面。每个交互都会启动WatchKit app和对应的WatchKit extension。Watch app和WatchKit会一直传递信息指导用户停止操作app,这个时候iOS挂起estension知道下次用户操作。

在启动时,WatchKit为当前操作加载合适的场景。如果用户查看app的glance,WatchKit从storyboard中加载glance场景。如果用户直接启动app,WatchKit加载app的初始化场景。加载场景后,WatchKit通知WatchKit extension创建对应的界面控制器用来准备要展示的场景。下图展示了这个过程。

使用界面控制器的init和awakeWithContext:方法来加载需要的数据,设置对象的值,以及界面展示的准备工作。不要使用willActivate来初始化界面。willActivate方法只在将要显示的很短时间内调用,所以只能用这个方法做微笑的改变。比如,用这个方法来开始动画,或者开始只有界面显示时才执行的操作。

界面在屏幕上时,用户界面的操作会又界面控制器的自定义方法处理。当用户操作表格,按钮,开关等控件时,WatchKit会调用你的方法来响应。使用这些方法来更新界面以及执行相关的人物。如果要在其他时间执行任务,可以使用NSTimer来实现。

注意:Glance界面不支持事件方法。点击glance界面会启动app。

在用户操作Apple Watch时WatchKit extension会一直运行。Apple Watch的操作一般比较简短,所有界面控制器应该轻量并且不要执行长时间的任务。当用户退出app或者停止Apple Watch操作,iOS会停止界面控制器并且挂起WatchKit extension。如下图

App不同状态执行的不同任务

在app声明周期的不同状态,iOS会调用WKInterfaceController对象的方法来让它处理。下面的表格列出了基本上要实现的方法,以及他们是做什么的。

方法 执行的任务
init 第一个初始化的机会
awakeWithContexxt: 使用任何可用的数据配置界面控制器。使用它来加载数据,更新标签,图片,表格以及其他storyboard中的对象。context数据是配置新控制器时指定的。例如,在一个多层的界面中创建一个新界面时,会指定下一个界面要显示的context数据。建议提供context对象但是不是必须的。
willActive 界面马上就要显示给用户了。这个方法中做一个界面小的改变。例如,用这个方法根据新数据改变标签内容。界面的初始化工作还是要在init和awakeWithContext:方法中做
didDeactivate 使用这个方法来清理界面以及让界面进入静止状态。例如,使用这个方法来停止计时器以及停止动画。不能在这个方法中给界面对象设置值。从这个时候到willActivate调用之前,所有的试图改变界面值的方法都被无视了。

在模拟器上调试状态的代码

在测试中,可以锁定和解锁模拟器来确认activation喝deactivation代码是否按预期的工作。当使用Hardware>Lock命令来锁定模拟器,WatchKit会调用当前界面的didDeactivate方法。解锁模拟器的时候,WatchKit会调用willActivate。

和已有iOS app共享数据

如果iOS app和WatchKit extension依赖同样的数据,使用共享的app group来存储数据。App group是线程安全的。由于WatchKit extension和iOS app在不同的沙盒环境中,因此他们不能直接共享文件以及通讯。App group让两个进程可以共享文件和数据。

在iOS app和WatchKit extension工程的Capabilities tab中设置一个共享的app group。为每个target添加一个entitilements文件,向文件中添加一个com.apple.security.application-groups元素。所有的target需要选择同一个app group。

在运行时,通过读写共享的文件夹来共享数据。使用NSFileManager的containerURLForSecurityApplicationGroupIdentifier:方法来获取文件夹根地址。使用这个URL来枚举文件夹内容或者创建新的文件。

也可以用group id创建一个NSUserDefaults对象来共享数据。使用initWithSuiteName:方法创建的NSUserDefaults对象可以访问共享数据。iOS app和WatchKit extension都可以读写数据。

直接和iOS app通讯

app可以使用openParentAllication:reply:方法来向iOS app发送请求和接收响应。WatchKit extension不支持后台运行模式。他们只在用户操作Apple Watch时运行。iOS app没有那么多限制,他们可以被配置为在后台运行来为WatchKit extension获取数据。有些活动可能需要一些时间才能完成,比如获取用户的位置,应该由iOS app来完成然后把数据传给WatchKit extension。

当调用openParentApplication:reply:方法时,iOS在后台启动或唤醒app然后调用app delegate的application:handleWatchKitEctensionRequest:reply:方法。App delegate通过提供的信息执行操作然后把结果返回给WatchKit extension。

时间: 2024-08-29 16:18:48

Apple Watch 开发介绍(一)WatchKit App 架构的相关文章

Apple Watch 开发介绍(一)配置Xcode工程

WatchKit app需要一个现有的iOS app.在iOS app工程中,添加一个新的WatchKit app target,它包含了WatchKit app和WatchKit extension中需要的资源.他们会和iOS app一起发布到appstore. WatchKit app target提供了初始创建WatchKit app,glances,以及自定义通知界面的的所有资源.iOS模拟器可以用来测试所有的界面和行为. 注意:WatchKit开发需要iOS 8.2或更新的SDK. 添

Apple Watch 开发介绍(一)简介

使用Apple Watch,用户可以使用一种不显眼的方式查看信息.不用把iPhone从口袋里拿出来,就可以通过看一下手表快速获得重要信息. 作为Apple Watch的第三方app开发者,应该通过使用最直接的方式提供做重要的信息来支持简短的操作 Apple Watch和它匹配的iPhone Apple Watch需要一个iPhone来运行第三方app.要创建一个第三方app,需要提供两个东西:一个WatchKit app(在Apple Watch中运行)和一个WatchKit extension

Apple Watch开发(三)--WatchKit简介和Watch适配、布局

上篇简单介绍了创建了一个Apple Watch开发的project的过程,那么对于新生成的文件有什么用呢?老项目怎么适配Apple Watch呢?下面我就来简单介绍下WatchKit和Watch项目中的文件作用.及其布局特点. 一. 旧项目适配Apple Watch 普通老项目可以添加Apple Watch吗?需要注意什么?有些人直接在旧的项目中,按照上篇写的那样去添加一个Apple Watch的Target,但是一编译发现出错了,报错如下: error:WatchKit apps must h

Apple Watch 开发详解

Apple Watch  开发详解 Apple Watch 开发详解 Apple Watch现在对于第三方开发者来说更多的还是一块额外的屏幕.暂时WatchKit没有能给出足够的接口.现在Watch App的主要运算逻辑需要依赖iPhone,Apple也承诺会有原生的手表App,可能要等到Apple Watch和WatchKit的完全版面世的时候. 1.两种屏幕分辨率 屏幕尺寸 38mm 42mm 分辨率 272 x 340 312 x 390 宽高比 4:5 4:5 2.三种屏幕模式 主屏模式

Apple Watch开发(二)--Xcode创建项目及其结构

在上一篇文章中介绍了Apple Watch的特点和app运行模式,那么这篇我们来看下如何利用Xcode创建一个Apple Watch的project. 一. 运行环境 首先我们来用这个Xcode创建Watch app的时候肯定要注意开发环境,Watchkit是在Xcode6.2beta版本加入的,所以我们需要: 1.     电脑系统在Mac OS10.9.4以上: 2.     Xcode在6.2beta版本以上,当然现在Xcode已经到6.3.1了,用最新版就可以了: 二. 创建项目 具备开

Apple Watch开发(一)--简介

一.Apple Watch简介   2015年3月10日,苹果在旧金山Moscone Center召开2015年春季新品发布会,正式发布了Apple WATCH,分为运动.标准.定制三版,将于2015年4月10号预售,4月24日上市. Apple Watch采用蓝宝石屏幕不怕刮,两个屏幕尺寸.支持电话,语音回短信,连接汽车,天气.航班信息,地图导航,播放音乐,测量心跳.计步等几十    种功能,是一款全方位的健康和运动追踪设备.有普通.运动.定制三个系列,18K金铝金属等材质配色.Apple W

[转载]Apple Watch 开发详解

Apple Watch 开发详解 Apple Watch现在对于第三方开发者来说更多的还是一块额外的屏幕.暂时WatchKit没有能给出足够的接口.现在Watch App的主要运算逻辑需要依赖iPhone,Apple也承诺会有原生的手表App,可能要等到Apple Watch和WatchKit的完全版面世的时候. 1.两种屏幕分辨率 屏幕尺寸 38mm 42mm 分辨率 272 x 340 312 x 390 宽高比 4:5 4:5 2.三种屏幕模式 主屏模式 Glance模式 通知模式 主界面

Apple Watch开发快速入门教程

Apple Watch开发快速入门教程 试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本Apple Watch开发教程,全面讲解WatchKit的各个方面,帮助读者更为快速的掌握Watch开发方式和流程. 目录 第1章  开发环境--Xcode 1 1.1  苹果账号 1 1.1.1  苹果账号的成员分类 1 1.1.2  注册免费的苹果账号 1 1.1.3  注册收费的苹果账号 4 1.2

apple个人开发者证书无线发布App的实现

解释:apple个人开发者证书无线发布App的实现,不把App发布到AppStore,直接安装到设备上(设备无需越狱),但此设备需要签名(也就是把设备加入到开发中).(100台设备) 当然299$ 的无需签名 即可无限安装. 下面直接上图,介绍实现步骤: 1.设置签名 利用developer profile或者adhoc distribution profile签名app,注意,不能使用distribution profile方式签名,经过测试,是无法安装的.其中原因个人认为developer