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

相关推荐

  • 2018年04月07招聘岗位

    诚聘:通辽澳鼎医疗器械公司诚聘:工作人员要求:40岁到50岁之间的女性,能长期工作的,有爱心,有孝心,家庭没有负担的,高中以上文化程度,语言表达能力好待遇:中午有工作午餐,每个周日休息,节假日休息,基本工资1800元,满勤奖200元,年底奖金不少于12000元。联系人:闫经理。联系电话,15247572846,15374967717不能长期工作的勿扰!招聘服务员工资底薪2500加提成收银员2700元加提成招聘电话:8663888,157...

    2018-04-08
  • 2018用户体验趋势报告

    在2017年我们看到了很多用户体验的进步和优秀的产品。在与来自全世界的189489名设计师分享学习了1926篇优秀文章之后,我们(uxdesign.cc)分析得到了2018年的一些用户体验趋势。1 用户体验的死亡与重生作为用户体验设计师,我们一直都在争取尽早地参与战略决策,现在,设计师在项目中的地位越来越重要,那么我们要如何应对呢?你的app的用户引导页使用体验如何呢?下面是最佳的自查表;不确定哪种导航最适合你的网站?去看看网站设计样例...

    2018-02-03
  • 交互案例实战!三个按钮背后由小见大的交互思考

    @窒息红Leon :初入交互设计工作,最常见的需求就是——放按钮。放按钮看起来是超级简单的事,无非就是设计按钮的样式、摆放按钮的位置、确定按钮的状态与反馈等,但殊不知其『麻雀虽小,五脏俱全』,小小的按钮设计…

    2015-09-18
  • 全面解读!人工智能如何改善五大用户体验?

    点击【阅读原文】,即将IPO独角兽,抓住上市前最后的机会!最近两年人工智能技术在金融、安全、交通、医疗、公共服务和制造业等领域逐渐落地,随着技术的成熟,人工智能将会在更多领域影响人类的生活。以人为本的人工智能设计会变得更加重要,本文会从安全性、效率、易用性、场景化、个性化五个方面阐述人工智能如何改善现有的产品和用户体验,这五个方面存在着各种联系并相互影响。安全性越接近系统底层的技术越影响用户体验,例如手机中毒或者信息被盗都会对用户产生巨...

    2018-05-05
  • 交互设计是一个什么样的专业? | 大咖说

    近些年来,交互设计这个词越来越多的出现在我们的生活中,是一个仿佛到处都有,但却又“看不见,摸不着”的东西。所以到底什么是交互设计?百度解释如下交互设计(英文Interaction Design, 缩写IXD),是定义、设计人造系统的行为的设计领域,它定义了两个或多个互动的个体之间交流的内容和结构,使之互相配合,共同达成某种目的。交互设计努力去创造和建立的是人与产品及服务之间有意义的关系,以“在充满社会复杂性的物质世界中嵌入信息技术”为中...

    2018-02-14
  • JDC丨京东设计中心 - 电商大促攻略页设计指南

    通常我们看到的旅游攻略,游戏攻略等都是以文章资讯的形式呈现,只可阅读不可交互。而电商大促活动中的攻略页,可不仅仅是一篇资讯文章那么简单,除了要向用户传达促销信息,往往承载着引流,预约,发券,传播等营…

    2018-03-27
  • 我手机里的应用设计体验

    最近养成了一个习惯,看到手机应用的一些设计点,自己觉得好或者不好的时候就会截图下来,翻了一下手机已经存了一堆图片了,就干脆发出来吧。 应用更新通知弹窗 应用更新弹窗是几乎每个应用都会有的一个模块,但是…

    2016-06-27
  • 程序员如何应对「给我弄个网站吧」的请求?

    点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事编者按:昨天,我们在这篇《“你是程序员,帮我修个电脑吧” “不会,滚”》的文章中,发起了个投票。结果发现三个选项中,打败「修电脑」,位居榜首最令大家“抓狂”的选项,竟然是「我想要创业,你帮我建个网站吧,就像淘宝那样的,一定很好做吧」。一般,遇到此类情况,我们可以选择两种处理方式:第一种,直怼式。例如:“我给你1000块,你帮我做个淘宝,就和马云的淘宝一样的” “你...

    2018-04-08
  • Apple Watch APP设计第一课:了解Apple Watch视觉和设计原则

    在我们可以开始设计一个Apple Watch应用之前,要先理解其背后的视觉和设计原则。Apple Watch有三个重要主题:个人,整体,轻量级。如果想设计一个具有惊奇体验的应用,还有一个你应该考虑但苹果公司没有提及的,即 …

    2015-09-29
  • 如何把产品思维应用在APP页面上

    产品思维的终极目标就是  让产品经理和UI设计人员、交互设计师等建立卓有成效的合作关系,携手做出更好的移动端产品。

    2017-05-12