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的初步印象,在下面的评论写下你的想法。
相关文章推荐
- Linux下安装PHP环境
- System-value semantics for the rasterizer stage.
- Android tcpdump抓包方法与步骤
- Ceph官网中文文档翻译小组OSChina入住
- Tiny VS 其它开源产品
- ios --- 调用系统"设置"里的功能
- 顺序栈
- JNI--java和C++互相调用
- 算法---和为定值
- C++ map的基本操作和用法
- Crashlytcis - 闪退分析平台
- Effective C++ 条款28
- 理解char * 和 char [ ] 的区别 (重要)
- GET方法后 获取url 后面指定的 参数的 值
- 快速搭建Tiny开发项目
- android开发过程中自定义动画加载进度条实现过程
- Ubuntu14.04 关闭图形启动界面,启动文本界面
- 11gR2 集群(CRS/GRID)新功能—— SCAN(Single Client Access Name)
- 【ZOJ 3856】Goldbach(FFT)
- 安卓客户端测试中,那些容易忽略却又非常重要的测试内容