APPLE WATCH 中文手册:Apple Watch应用程序的体系结构

Apple Watch应用程序包含两个部分:Watch应用和WatchKit应用扩展。Watch应用驻留在用户的Apple Watch中,只含有故事板和资源文件,要注意它并不包含任何代码。而WatchKit应用扩展驻留在用户的iPhone上(在关联的iOS应用当中),含有相应的代码和管理Watch应用界面的资源文件。

当用户开始与Watch应用交互时,Apple Watch将会寻找一个合适的故事板场景来显示。它根据用户是否在查看应用的glance界面,是否在查看通知,或者是否在浏览应用的主界面等行为来选择相应的场景。选择完场景后,Watch OS将通知配对的iPhone启动WatchKit应用扩展,并加载相应对象的运行界面。所有的消息交流都在后台进行。

图3-1 Watch应用和WatchKit应用扩展之间的通信:

1416556608821788

您Watch应用的构建模块是界面控制器,它是 WKInterfaceController 类的实例。WatchKit中的界面控制器用来模拟iOS中的视图控制器:它显示、管理屏幕上的内容,并且响应用户交互。

如果用户直接启动您的应用,系统将从主故事板文件中加载初始界面控制器。根据用户的交互,您可以显示其他界面控制器以让用户得到需要的信息。如何显示额外的界面控制器取决于您应用所使用的界面样式。WatchKit支持基于页面的风格以及基于层次的风格。这两个风格不能共存的,要了解更多信息,请参阅:Interface Styles.

提示:Glances和通知只会显示一个包含相关信息的界面控制器。用户与界面控制器的交互操作会展示应用的主界面。要了解glance的生命周期,请参阅The Glance Life Cycle。要了解通知界面控制器的生命周期,请参阅:Notification Essentials.

Watch应用的生命周期

Apple Watch上的用户交互将启动您的应用并驱动其生命周期。当用户在Apple Watch上运行您的应用时,用户的iPhone会自行启动相应的WatchKit应用扩展。通过一系列的信号交换,Watch应用和Watch应用扩展将互相连接,因此消息能够在二者之间流通,直到用户停止与应用进行交互为止。此时,iOS将暂停应用扩展的运行。

随着启动序列的运行,WatchKit自动为当前界面创建相应的界面控制器。如果用户正在查看glance,WatchKit创建出来的界面控制器将与glance相连接。如果用户直接启动您的应用,WatchKit将从应用的主故事板文件中加载初始界面控制器。无论哪种情况,WatchKit应用扩展都提供一个名为WKInterfaceController的子类来管理相应的界面。

界面控制器对象初始化后,您就应当为其准备显示相应的界面。图3-2展示了Watch应用的启动序列。当应用启动时,WatchKit框架自行创建了相应的`WKInterfaceController`对象并调用initWithContext:方法。使用该方法来初始化界面控制器,然后加载所需的数据,最后设置所有界面对象的值。对主界面控制器来说,初始化方法紧接着willActivate方法运行,以让您知道界面已显示在屏幕上。

图3-2 启动Watch应用

1416557330222678

当用户在Apple Watch上与应用进行交互时,WatchKit应用扩展将保持运行。如果用户明确退出应用或者停止与Apple Watch进行交互,那么iOS将停用当前界面控制器,并暂停应用扩展的运行,如图3-3所示。与Apple Watch的互动是非常短暂的,因此这几个步骤都有可能在数秒之间发生。所以,界面控制器应当尽可能简单,并且不要运行长时任务。重点应当放在读取和显示用户想要的信息上来。

图3-3 界面控制器的生命周期

1416557358195047

应用生命周期中各阶段需执行不同的任务

在应用生命周期的不同阶段,iOS将会调用WKInterfaceController对象的相关方法来让您做出相应的操作。表3-1列出了大部分您应当在界面控制器中声明的主要方法。

Table 3-1:WKInterfaceController`的主要方法

方法 要执行的任务
initWithContext: 这个方法用来准备显示界面。借助它来加载数据,以及更新标签、图像和其他在故事板场景上的界面对象。
willActivate 这个方法可以让您知道该界面是否对用户可视。借助它来更新界面对象,以及完成相应的任务,完成任务只能在界面可视时使用。
didDeactivate 使用didDeactivate方法来执行所有的清理任务。例如,使用此方法来废止计时器、停止动画或者停止视频流内容的传输。您不能在这个方法中设置界面控制器对象的值,在本方法被调用之后到willActivate方法再次被调用之前,任何更改界面对象的企图都是被忽略的。

除了在表3-1中列出的方法,WatchKit同样也调用了界面控制器的自定义动作方法来响应用户操作。您可以基于用户界面来定义这些动作方法。例如,你可能会使用动作方法来响应单击按钮、跟踪开关或滑条值的变化,或者响应表视图中单元格的选择。对于表视图来说,您同样也可以用table:didSelectRowAtIndex:而不是动作方法来跟踪单元格的选择。用好这些动作方法来执行任务并更新Watch应用的用户界面。

提示:Glances不支持动作方法。单击应用glance始终会启动应用。

与Containing iOS应用共享数据

如果您的iOS应用和WatchKit应用扩展都依赖于相同的数据,那么您可以使用共享程序组来存储数据。共享程序组是一个位于本地文件系统的区域,应用扩展和应用都能够访问。由于两个程序在不同的沙箱环境中运行,它们一般情况下都不与对方共享文件和进行通信。共享程序组让共享数据成为可能。你可以使用这个空间来存储共享的数据文件或者在两个程序间交换消息。

您可以在iOS应用和WatchKit应用扩展中的Capabilities选项卡中启动共享程序组。激活这项功能后,Xcode将会为每个对象添加授权文件(需要的话),并给那个文件添加com.apple.security.application-groups授权。要共享数据,这两个对象必须选择相同的共享程序组。

程序运行时,您可以通过在共享容器目录中读写文件以在两个程序间共享数据。要访问容器,请使用NSFileManager中的containerURLForSecurityApplicationGroupIdentifier:方法来接收该目录的根路径。使用方法返回的URL来枚举目录内容或者在目录中为文件创建新的URL。

重要:请始终在共享容器目录中使用文件演示器和协调器来访问文件。文件演示器和协调器允许对文件和目录进行同步访问。没有它们,您的WatchKit应用扩展和iOS程序可能会相互冲突并毁坏共享的文件。有关如何使用文件演示器和协调器的信息,请参阅:File System Programming Guide

原创文章,作者:ioued,如若转载,请注明出处:https://www.iamue.com/6220/

(0)
iouedioued
上一篇 2015-06-15 09:31
下一篇 2015-06-15

相关推荐

  • APP动效设计欣赏

    目前为止,app动效也越来越重要了,很多移动app设计师已经开始尝试去制作自己的app动效设计。因为好的app动效设计可以让自己的app产品顿时高大上。 开门见山吧,我们回顾下APP中的动效可以划分为两类: 一类是转场…

    2015-12-23
  • 交互设计的综合性——后APP时代交互设计师的主场

    作者:司马西   1. 后APP时代-用户时间的争夺战 近几年来,移动互联的普及,各大厂商为了抢占市场激烈竞争。然而硝烟散去,我们统计并回视移动互联网的App世界,各大行业(包括:新闻、游戏、餐饮、医疗、教育、金…

    交互专题 2017-08-07
  • 杭州-UI设计师招聘需求

    点击上方蓝字一起关注这个公众号吧!什么是用户体验用户体验是一种纯主观的在用户使用一个产品(服务)的过程中建立起来的心理感受。把最终用户作为设计和开发活动的焦点,而不是系统、应用程序或者单纯的审美价值。它是基于一般的以用户为中心(用户至上)的设计理念。最简单的用户体验(User Experience,简称UE),最直接影响你的网页浏览度的因素。在网站策划和网站运营当中,用户体验是最重要的一个因素,直接影响到你的网站是否成功。网站用户体验(...

    交互专题 2018-03-13
  • Welcome to the Gutenberg Editor

    The goal of this new editor is to make adding rich content to WordPress simple and enjoyable. This whole post is composed of pieces of content—somewhat similar to LEGO bricks—that you can move around…

    2023-03-03
  • 微信Axure原型练习和资源分享

    “我根本没把你放在眼里。”“因为你一直在我心里。”▼这是咸冬日的第叁篇文章这两天业余时间学习了axure的基本功能,做了一个简单的微信原型练练手,教程分享给大家。首先需要准备基本素材,可以从我的源文件中获取。1.设置手机主页和home热键用例。2.拖入内联框架(w273*h482),设置从不显示和隐藏边框,并链接到主页。3.设置主页交互:1)主页内拖入动态面板“内容区”(273X396),并增加4个menu状态(微信、通讯录、发现、我;...

    2018-03-10
  • 消灭空状态

    设计师在做设计的时候,常常会忽略的一个页面状态就是空状态。空状态,顾名思义就是空白的状态,比如说:一个新闻的列表中没有新闻,这个时候列表就是空的,用户打开之后看到的就是白惨惨的一片。空状态的用户体验…

    2016-01-29
  • 交互设计与空间展示的深度结合 | 通过交互科技扩展展览空间的体验维度

    本文分为两个主部分,第一部分为如何理解,通过交互科技扩展展览空间的体验维度,第二部分将结合若干具体案例,为大家分享怎样运用交互科技,扩展展览空间的体验维度。大理石是大型彩色模压形状,能够和人通过声音…

    2017-08-01
  • 50个国外设计机构网站设计欣赏

    Web设计灵感总是帮助我们走在新趋势, 设计结构、颜色和总体设计过程。有很多灵感的网站列出的主题就是我想要这一个是不同的。所以在这个今天的帖子我收集了50个国外设计机构网站设计欣赏,为你找设计的灵感。

    2017-06-03
  • Axure RP 8软件和安装教程

    Axure RP 8(64位)下载链接:百度网盘:https://pan.baidu.com/s/1hsfD3Kg提取密码:ivma软件简介:Axure RP是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。作为专业的原型设计工具,它能快速、高效的创建原型,同时支持多人协作设计和版本控制管理。(仅供学习交流使用)安装前须知:1.解压和安装前请关闭...

    2018-04-17
  • 交互设计套路之——导航设计

    当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放Five Hundred MilesThe Shadows - Dance With The Shadows/The Sound Of The Shadows亲爱的小伙伴们好久不见啦你们的涂涂回来啦!!不知是时间太快还是指缝太粗总是留都留不住总之感谢小伙伴们的不离不弃话不多说赶快准备好小板凳和瓜子嗑着瓜子咱们就开聊吧下面开始分享app的套路之一导航设计一、导航的分类1.标签式导航...

    2018-02-11