您的位置:首页 > 其它

WWDC 2015 之 watchOS 2 初印象

2015-06-30 14:49 465 查看

本文由 @DenJohn 翻译自raywenderlich,作者:Mic Pringle
原文:WatchKit for watchOS 2: Initial Impressions
虽然我跟Ray一样未能出席今年的WWDC,但我依然能从大会视频中度过一段令人惊奇的时刻,阅读新开发文档并跟Jake、Nate以及教学团队的各位成员一起讨论WWDC的新闻。

你能从我的播客了解到我是一个AppleWatch的死忠粉,因此我对watchOS2里面的东西都特别兴奋。
我花了好几天去看AppleWatch文档,让我来快速地概述一遍你会感兴趣的内容。你可以在下面的评论发表你的想法或是我出错@了的地方!
架构(Architecture)
WatchKit的这版本最大变化或许就是你能够在Watch构建原生apps。


不像之前的版本,watchapps需要在你的iPhone上执行代码,再通过接口在你的watch上展示界面,watchOS2上能够通过watch自身来驻留和执行apps。
这样带来的好处就是你的apps能启动得更快,而且因为不用每一次互动都通过watch和iPhone的蓝牙LE往返,apps反应更灵敏。
这对之前的版本是有一定影响的,转为原生apps你需要注意:
openParentApplication(_:reply:)已经从SDK去除了。但是不用担心,这已经被丰富的WatchConnectivityframework取代,后面将会提到。

使用共享app组来共享文件不再是唯一选项。同样,你可以通过WatchConnectivityframework来实现共享文件。苹果还为watchOS2的原生apps提供了网络访问。因此,你在用iPhone从网上拉取数据再放到appgroups上共享的方式已经过时了。你可以直接在watch上使用NSURLSession上拉取数据。

iCloud在watch上不可用。

Watch Connectivity
你可以通过?WatchConnectivityframework?来实现watch与配对iPhone上的文件和数据的来回传输。如果这两个apps是在前台上运行,则通信是实时的,否则通信会被转移到后台,直至接收数据的一方启动进入前台的时候才转移回来。
在这个新框架的主要成员是WCSession,它负责处理了两个设备之间的所有通信。你不需要自己去创建这个类的实例对象,只需要使用defaultSession单例对象就可以了。
要启动和运行WCSession,你需要指定一个对象去遵从WCSessionDelegate,分配给WCSession的委托属性并调用activateSession()。如果你打算频繁的使用WatchConnectivity的话,我强烈建议你尽可能在apps的早期生命周期完成这个设置。
当你的WCSession设置好了并且激活了,你可以使用下列的任何方法来传输数据和文件:
oupdateapplicationcontext(_:error)这是以字典数据来传输到对应的app的方法。这过程不会即刻发送,但会在对应的app唤醒的时候发送。对应的app通过WCSession的委托session(_:didReceiveUpdate:)方法来接收字典数据的。

osendMessageData(_:replyHandler:errorHandler:)用于数据即时传输到对应app的方法。调用这个方法发送的数据会进入一个队列,按照进入队列的先后顺序来发送出去。如果是从watch向iOSapp发送数据并且该iOSapp没在运行的话,那么接收数据的iOSapp将会在后台被唤醒。如果你从iOSapp发送数据而watchapp没有运行的情况下,errorHandler就会被调用。接收数据的app会通过WCSession的委托方法session(_:didReceiveMessageData:replyHandler:)方法来接收。

otransferFile(_:metadata:)是用于传输文件,比如通过后台来传送图片。它跟上面的方法一样,若iOSapp没有运行则在后台唤醒,而watchapp没有运行则执行errorhandler方法。你需要实现的相应的委托方法session(_:didReceiveFile:)来接收文件。

WatchConnectivity框架还提供了许多别的方法,因此我强烈建议你去翻翻 参考文档
看!我就说过你不用为了丢失了openParentApplication(_:reply:)而担忧。
其他WatchKit的亮点(Other WatchKit Highlights)
尽管已经讨论过这版本WatchKit中最大的两个变化,但我还是觉得有其他几个亮点值得一提。
动画(Animation)
WatchKit还可以用之前那样原始方式通过轮询处理好的图片组去运行动画,不过WKInterfaceController现在通过animateWithDuration(_:animations:)提供了更接近于iOS的基础动画。只需要持续时间和block,就可以在设定的持续时间里执行block里面的动画。例如:
animateWithDuration(1){()->Voidin
self.label.setHorizontalAlignment(.Left)
self.label.setAlpha(0)
}
你可以通过更改以下WKInterfaceObject属性来设置动画:
透明度

宽高

垂直和水平位置

背景颜色

布局组中的插入

注意:glances和自定义通知都不支持动画,在该animationblock里的动画变动会直接没有动画。
我知道这动画是有点简陋,因为它不支持时间曲线,甚至不能设定在动画完成后进行的操作。但我敢肯定你也会认为这是苹果正确道路上的一步,我希望这是它为未来的硕果埋下的种子。
访问更多硬件(MoreAccessToTheHardware)
watchOS2提供了很多硬件设备和传感器,包括电子表冠DigitalCrown,振动引擎TapticEngine,心率传感器heartratesensor,加速计accelerometer以及麦克风microphone等。
这将会给你的apps带来一个全新的世界,例如你能通过你的健康app来检测心率,或者通过振动引擎带来的更逼真的游戏体验。说到这我真的迫不及待!:]
新接口对象(NewInterfaceObjects)
苹果在这个版本的WatchKit里推出了一个全新的接口对象:WKInterfacePicker,它是个通过电子表冠来进行交互的滚动列表。在WKInterfacePicker中的物品(item)可以是文本、图像、或是图文混合。当用户选择了里面的物品,WatchKit调用WKInterfacePicker中的方法来传递选择了的索引。
WKInterfacePicker可以通过三种不同风格来展示:
List:把物品垂直排列显示的列表。

Stacked:将要展示的物品转为一叠卡片通过滚动电子表冠来一张张显示。

ImageSequence:从图像序列中抽出单个图像展示。

值得一提的是,可以通过单个的接口控制器(interfacecontroller)来控制多个WKInterfacePicker。
说到接口控制器,WKInterfaceController现在提供了让你直接弹出alerts和actionsheets的方法。
调用presentAlertControllerWithTitle(_:message:preferredStyle:actions:)在当前的接口控制器弹出一个alert或是actionsheet。根据你设定的preferredStyle参数来显示出不同的样式。其中的actions参数是包含WKAlertAction实例的数组,通过用户点击相应的button来执行它自身提供的block。要注意的是,你需要dismiss这些alert和actionsheet。
再来一个...(OneMoreThing…)
在之前的播客中,我和Jake讨论过我们希望有哪些东西会在WWDC上宣布,其中我们都赞成的是AppleWatch可以自定义数字附件(complications)了,你可以想象一下在时钟界面安装各种widgets。我猜Tim和公司会
没错,现在你可以为watchapp创建自定义的数字附件,并且将你的数据展示到用户选择的watch界面上。
自定义数字附件是围绕家族概念构建的,每个家族提供一个或多个模板,你可以把你的数字附件子类化后,再通过这些模板实现。
有五种直接实现的数字附件:
Modular:这家族有small,large两个分类,并且他们都能通过模块watch界面上看到。

Circular:只有small分类,在简约watch界面上看到。

Utilitarian:和Modular一样有small,large两款在实用watch界面上看到

如果你没有AppleWatch或是对watch界面类型不熟悉可以看 指南 了解,里面也提到过怎么实现Custom Complications(自定义数字附件)。也可以从watchOS 2 Transition Guide的Providing Custom Complications部分查看更多关于编译Custom Complications的细节。
Custom Complications对我来说是这版本WatchKit中的亮点,我迫不及待去研究这些API了,然后创建我自己的数字附件。
未来会怎样?(Where To Go From Here?)
总的来说,我对watchOS2的这些新功能都感动很激动,我期待着接下来的几个月和教学团队一起完成第二版的 Wactch Kit by Tutorials
需要注意的这只是watchOS2的WatchKit第一个版本,像以前发生的情况那样,苹果未来发布的版本甚至会添加有更多的新功能和API,那时候这些东西又会过时,或许被更好的取代。历史总是惊人地相似。
我想了解下你对于这版本WatchKit的初步印象,在下面的评论写下你的想法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: