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设计中的应用》

    2017-06-05
  • 便宜的指纹锁也会有“便宜”的用户体验

    欢迎关注:CDTV-1周一至周五晚7:30—7:40全国首创电视融商节目《天天橙掌柜》。很多指纹锁在你跟老板杀完价的那一刻是开心的用的时候并不是那么开心的例如说:外观掉漆脱落了把手松动了指纹录不进或不好打开了说好的密码备用关键时刻掉链子了配的机械钥匙太low了电池没过多久就没电了指纹锁没用多久就得找师傅上门维修了等等等等,烦心吗?趁着特价,换吧智能门锁吧超B级锁芯多种开门方式让你的生活更省心省力橙掌柜家庭安全节德施曼小嘀S8云智能门锁只...

    2018-03-09
  • 这场UED界的大会堪比最近最火爆的雄安楼市

    2011年,阿里UED委员会的几位童鞋一商量,想给互联网的UED们一个搭交流学习的场子,就发起了第一届UCAN。如今,UCAN已经从阿里的UED的大团建发展成了国内最热门的设计大会之一。2017届的UCAN今天在阿里巴巴西溪园区召开,小编在现场看到走道都坐着人,800多人的场子,10000人报名,快赶上抢房摇号的阵仗了。报名的观众不但专业齐全,视觉、交互、用研、工程师、产品经理一个不拉,而且来自的公司阵容也很强大,腾讯、百度、亚马逊……...

    2018-02-01
  • App按钮如何设计才合理?这些设计学问你还不知道

    每个 app 里面会遇到「按钮」,在发展的过程中,按钮是怎样变化的?怎样设计按钮才合理?AppSo(微信号 appsolution)这篇文章便为你解答。

    2017-05-09
  • 【用户体验.春节特辑】一本相册(总第269期)

    亦可访问www.koushutianxia.com了解详情编家谱   修家史   留视频建祠堂   亲互动   传万代总第269期我的发小蔡廷是我们这座江南古镇的一位”达人”,这并非他有什么才气,而是他的行为举止与这座千年古镇淳朴温和的民风相违和。天气刚有点热他便剃了个秃瓢,赤裸着上身,永远穿着条军裤,再热也不换装。腹部有两条贯腹的伤疤,象两条粗大赤红的蜈蚣僵卧其上。他从不拉帮结派,依附于任何人,不欺行霸市,不欺凌老弱,但是蛮不讲理。他...

    2018-02-20
  • 百度UED:运营设计那些事儿

    数十万互联网从业者的共同关注!作者:百度搜索用户体验中心 授权早读课发表,转载请注明出处。在现如今的社会中,每天都在进行着一场场没有硝烟的商战。运营设计则是至关重要的一部分。那么怎么才能做出一个好的运营设计或者一个相对比较成功的运营设计呢?我们要知道设计的目的。设计的目的是什么?设计核心在于能够让用户在有限的时间内Get最有价值的信息,找到所得,从而实现转化。知道设计的目的了,在项目中自然形成了一些思路流程。1、需求分析需求分析分为:产...

    2018-01-31
  • 「10招」教你玩转电商专题页面设计

    电商中的专题设计都是单页设计的一种应用。

    2017-08-04
  • 新交互时代:自然用户界面中的“自然”到底是什么意思?

    一个理想的自然用户界面应当能让用户的注意力完全集中在所要从事的活动上,而忘记界面本身的存在,或者说,界面变得“透明”了。一位印度的同行为当地用户设计了一组用数字笔操作的界面。在进行用户测试时,他对其中一位用户说:“请拿起笔碰一下屏幕。”出乎他意料的是,这一看起来十分简单自然的操作,居然出了问题:这位用户没有用笔尖,而是把笔横过来整个贴在了屏幕上!经询问才知道原来他不识字,也从没用过笔。
    而另一位欧洲的同行为家庭用户在交互桌面上开发了一套软件,包括一些直观的手势交互,例如用两个手指相反方向移动做打开的手势来打开一个虚拟的储物箱。当他向用户家庭演示时,他想考考这个家中正上小学的孩子:“你试试看怎么打开这个箱子?”孩子二话不说,直接用食指在箱子上双击!隐喻指的是把用户界面中的概念比拟为一种人们熟悉的概念或现象,用于解释其交互方式,例如将图形界面元素比喻为大家熟悉的桌面、窗口等等。隐喻越贴切,越为用户熟悉,往往就意味着界面越自然。

    2017-05-14
  • 国际用户体验设计论坛邀请函

    点击上方蓝字关注我们国际用户体验设计论坛暨中国工业设计协会用户体验产业分会第一届理事会预备会!  开始报名啦  !官方海报如下👇报名方式一👇长按识别下方二维码,通过报名页面报名👇报名方式二点击文章最底部“阅读原文”,通过H5报名页面完成报名了解我们关注我们长按下图二维码关注“UXE优艺智造”这里有最新的行业动向最前沿的学术研究来一探用户体验的商业价值吧联系我们电话15868193198邮箱uxestudy@126.com欢迎投稿

    2018-03-30
  • “桥”的创想——中安创谷“创业者之桥”设计全球征集于中科大正式启动

    📌 编辑 | P.S3月15日,中安创谷创业者之桥设计全球征集启动会于中国科学技术大学西区成功举办。标志着全球征集活动正式启动。来自中国科学技术大学、合肥工业大学、安徽大学、安徽建筑大学的师生、本地孵化机构负责人、创业团队、媒体代表等近200人参加了启动会。中安创谷科技园是中国当下以“众创空间、孵化器、加速器、产业基地和基金集群”为主要业态的科技园代表之一,“创业者之桥”作为连接一期、二期园区的重要纽带,对园区的整体性及交通流线起着重要...

    2018-03-17