利用iOS的技术
WatchKit extension使用和iOS app开发相同的技术,但是因为他们是extension,使用这些技术可能要有限制,有一些技术也是不推荐使用的. 这里有个列表显示了在某些时候使用特定的技术:
* 避免使用需要用户许可的技术,例如位置地位.
在WatchKit extension中第一次使用这个技术,可能会引起一个在用户手机上的不期望的提示. 更糟糕的是,这时候用户的手机正好在口袋里面看不见.
* 不要使用在后台运行的技术模式.
WatchKit extensions只当用户与WatckKit app进行交互时才运行,因此被当作在前台运行的extensions. 这样导致,WatchKit extension不能使用被一些技术支持的后台模式.
* 避免运行长时间的任务.
WatchKit extension在用户停止与WatchKit app交互时挂起. 因为WatchKit app交互很简洁,extension很可能在请求的数据回来的时候已经挂起了.
运行长时间任务的最好方法是让你的iOS app去执行. 例如,不在你的WatchKit extension去开启定位服务,而把它放到iOS app里面. 你的iOS app可以收集需要的数据,把这些数据放到共享的文件夹里面,这样extension就可以访问它. 使用OpenParentApplication:reply:方法去初始化任务并接受回复. 或者使用共享文件容器在iOS app和WatchKit extension之间交流. 具体关于怎么在iOS app和WatchKit extension交流的,可以看这里
Handoff 支持
Apple Watch通过使用handoff支持在其他设备上创建活动. 你可以通过使用WKInterfaceController的updateUserActivity:userInfo:webpageURL方法去创建活动并把他们通知到其他设备.
app glance是个例外,Apple Watch不能处理由另外设备产生的活动. 在Galance界面控制中,你可以通过活动字典给你的主app传递指定的信息. 如果用户点击了Glance去启动你的app,WatchKit传递活动字典给你的主视图控制器. 视图控制器可以使用字典的内容相应的去更新程序的UI. 具体如何传递从你的Galance传递数据给你的app,看这里
远程控制事件和现场播放数据
Apple Watch使用远程的控制事件系统来管理声音和视频的在配对的手机上播放.在传输过程中的Glance,给当前播放内容的app产生了远程控制事件.一个iOS app 注册MPRemoteCommandCenter对象的命令,当在“实时播放”的时候自动收到这些事件. 你不需要在你的WatchKit extension中做额外的工作来支持来自Apple Watch的远程控制事件.
注意:回应喜欢,不喜欢,添加书签这种命令,Apple Watch使用localizedShortTitle而不是MPFeedBackCommand对象的localizedTitle字符串.
实时播放glance自动展示任何由当前iOS app 正在播放的“实时播放”的数据.
iOS app通过使用MPNowPlayingInfoCenter对象来提供信息. 如果你的app播放它的内容,它应该负责更新nowPlayingInfo字典的值. Apple Watch自动检索这些信息并展示它. 除此之外,点击实时播放的Glance上的可用的标题可以启动WatchKit app.
关于如何实现远程控制事件和在iOS app中播放实时数据,看这里.