原文:How It Ticks: Building the Airbnb Apple Watch App
Airbnb希望能够出现在任何设备上,这样我们的房东和租客可以每天使用,任何人在任何地点都可以体验它。今年夏天早些时候,我们的一个小组开始着手在一个全新的移动平台(苹果手表)上塑造Airbnb体验。我们不知道这个天生可移动的可穿戴设备会带来什么。
我们最初的想法可能是最自然的一种:“把我们的iOS应用移植到手表!”。所以我们开始创建一个手表应用的原型,它可以浏览城市列表,可以收发信息,可以编辑和访问心愿单。因为手机接口是基于Xcode接口创建的,所以这是一个拖拽UI元素放到相应窗口的过程,相对来说我们完成得很快,但这样做对吗?
真的不对,我们很快就发现我们创建的原型不是我们能够提供的Airbnb最佳体验。浏览列表在小屏幕上是很困难的,很多类似保存到心愿单的交互过于复杂难以实现。另外,为了方便房东和租客做出决策我们需要提供很多细节信息,但我们无法全部显示,强行这样做的结果是不可避免地导致信息过载。
简单
在Airbnb我们的一个核心价值观是简单,Marco Arment在他的文章“重新设计Overcast的苹果手表应用“里非常详细地介绍了如何简化复杂的不必要的导航层,我们由此被提醒,我们要把核心价值观应用到手表应用。我们停止试图从iOS移植应用,一切从头开始。这一次我们心中有一个非常具体地目标:提供最佳通讯体验。
苹果手表是一个非常次要的设备,很可能只是你的iPhone的第二个屏幕。显然,我们应该这样定位我们的手表应用:只是Airbnb iOS应用的一个轻量级扩展。我们需要在Airbnb最关注和最重要的地方充分发挥苹果手表的移动性和通讯机制。现在我们发布的Airbnb苹果手表应用终于成型。
使用WatchKit开发:平衡的游戏
使用WatchKit工作是一个有趣的平衡游戏。因为watchOS 1的应用本质上都是iPhone的主要应用,在WatchKit扩展框架下开发时有很多注意事项。与以往相比,所有层次的iOS开发者都需要明白他们的代码对性能和电池使用的影响。
接下来的一个问题是:像网络请求这样的重要计算应该在iPhone的WatchKit扩展中执行,还是在后台唤醒父级iOS应用来执行?
答案取决于现在代码的结构。如果复杂的业务逻辑已经融入iOS应用,最简单的方法是在WKInterfaceController中调用openParentApplication,这样代码不需要在手表应用中重复。这会在父应用中触发handleWatchKitExtensionRequest,然后返回一个字典,包含了WatchKit扩展所需的计算结果。注意,由于需要序列化和通过蓝牙传输,它包含的所有值必须符合NSCoding。
在我们的案例中,我们已经有了AirbnbAPI这个独立的框架,它封装了网络层,我们可以很简单地把它引入WatchKit扩展,用它来执行一切,不需要一直唤醒iOS应用。这不仅减少了扩展和父应用之间的通讯开销,还让代码变得清晰。
当决定谁来执行计算时,要记住计算复杂度和持续时间是很重要的因素。计算越复杂,手表越需要使用iPhone的处理能力。今天的watchOS 1在性能上的差异并不明显。但是即将到来的watchOS 2有一个显著变化,WatchKit扩展将从iPhone移除到手表。这会导致性能差异变得明显,因为扩展中的代码将直接在手表中执行。这时,由iPhone来执行请求,再通过蓝牙将结果传输到手表还会比手表自身执行避免网络开销来得快吗?
认真思考什么是真正重要的
在开发时兼顾简单和苹果手表平台化是一个很大的挑战,甚至是一个笑话。小屏幕意味着我们不能把所有内容放到一个屏幕上,做设计时需要考虑一大堆问题,踏上这个旅程之前,所有的苹果手表开发者和设计者都应该问自己这样的问题:
这个按钮是否会在屏幕上占据30%的像素,是否需要成正比?
这个功能是否重要,人们会不会高频使用?它是否应该隐藏在强制触摸手式中?
如果这一屏显示的是用户关心的重要数据,是否通过主屏幕来访问它,这样我们是不是应该让它在手表应用中有一个漂亮的图标。
在这些看似不值一提的小事上所投入的努力、时间和思考让我们在接下来的开发中受益良多。我们认识到在思考什么是真实情况上投入的越多,我们的房东和租客在手表应用上浪费的导航时间越少,遇到的挫折越少。衡量一个手表应用是否优秀的重要指标是从抬起手腕到放下,用户完成一个任务有多快。
最终产品:一个通讯枢纽
Airbnb苹果手表应用不是设计用来取代iOS应用,它是一个通讯枢纽,帮助房东更快速的回应租客,让租客更快速地收到重要事件的通知。通过丰富的交互式通知,在手腕上,房东就可以接收订阅的请求:
租客通过他们的苹果手表收到通知后,可以通过内置的听写功能,第一时间回应房东的欢迎信息。
更进一步,我们通过添加一个Settings-Watch.bundle将Watch应用和Xcode中的iOS主应用集成(苹果手表编程指南),房东和租客可以在iPhone上的苹果手表设置应用中预先录用信息,当点击手表上的“回复”按钮时这些信息就会出现,并可以一键回复,我们希望这个功能可以帮助房东快速找到他们经常回复租客的答案,像“wiki密码是什么?”。
每一个细节都很重要
在Airbnb,我们真的相信“每一帧的事情”,因为手表还是一个发展中的平台,我们感觉很多人并不清楚他们手表上的应用可以做什么,不可以做什么。我们想让房东和租客明白新的手表应用可以帮他们做什么,所以我们为手表创建了第一时间用户体验,有些东西是我们此前从没见过的。
手表团队的设计师们Britt Nelson,Salih Abdul-Karim和Helen Tseng制作了大量精美的插图和动画来展示手表应用的功能,以及我们为什么认为这是Airbnb体验中的亮点。动画展示营造了一个鲜活、友好的氛围,让应用更容易接受。
时间到了!
今天我们非常高兴看到全球的房东和租客都在使用Airbnb苹果手表应用。在一个新的平台,成熟方案还没有出现,边界问题还正在探索,我们着手来做一些事情,这是在过去数月里一个非常有趣的挑战。
从最初一个玩具项目,手表应用慢慢变成Airbnb手机体验的一等公民,这是整个团队都非常骄傲的事。接下来,希望我们投入到这个项目的专注,高要求和对细节的用心不仅可以影响到其他做同样事情的开发者,还可以成为我们继续改进Airbnb体验的动力。
版权声明:“并发编程网”所推送文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,我们会在24小时内删除处理,谢谢!^_^15701189222

长按、关注

