1. WatchKit的NSExtensionContext通知
可能对诸多开发者来说,UIApplication上的函数方法并不陌生,比如applicationWillEnterForeground:和applicationDidEnterBackground:,两者都是先被调用,再分别发出UIApplicationWillEnterForegroundNotification和UIApplicationDidEnterBackgroundNotification的通知。而WatchKit的 NSExtensionContext通知则包括:
NSExtensionHostWillEnterForegroundNotification
NSExtensionHostDidEnterBackgroundNotification
NSExtensionHostWillResignActiveNotification
NSExtensionHostDidBecomeActiveNotification
2. 充电测试更有效
在Apple Watch充电时进行测试,测试过程更容易,结果也更可靠,这一点不仅仅是我,其他Apple开发者论坛上的同行也深有体会。
3. WatchKit只能在当前活动/可见的视图控制器上更新
在iOS上几乎可以随时更新界面元素,但WatchKit只能在当前活动/可见的视图控制器上更新。只要didDeactivate还没有调用,就能顺利完成更新(注意:界面元素不能用didDeactivate更新)。这也就意味着:开发者想 要更新一个当前隐藏起来的视图控制器(比如查看一个模态控制器“on top”),就必须用当前控制器的willActive方法来更新,而willActive只有在取消(dismiss)模态控制器时才能被调用。
4. addCachedImage:name缺省使用PNG编码
除了WatchKit应用捆绑包里的资源,每个应用还享有5MB容量的图片缓存空间,用WKInterfaceDevice上的方法来放置扩展,并用扩展进行管理。从扩展向Watch发送图片会消耗时间和电量,所以如果要再次使用某张图片(即使只用过一次),最好将它缓存起来;如果用addCachedImage:name:来发送图片,它会自动以PNG格式缓存起来(也许PNG格式并不是最合适的,但至少是最保险的)。如果图片能以JPG格式再次呈现的话,那么建议改用addCachedImageWithData:name: 来发送。以JPG格式储存图片后再试试画面设置,图片转换不仅更快,还省下了不少缓存空间,方便储存更多图片。
5. 支持后台线程缓存图像
依然跟上一条建议相关:开发者可以在后台线程上缓存图片(开发者论坛的一名苹果员工如是说)。我在开发Watch应用时尝试了一下,图片在读取之前就缓存好了。
6. 开发者需自行封装图片管理器
要使用上述的图片缓存的话,并无内置的方法来检测最早的图片。若应用同时管理很多图片,可能需要在缓存里设立一个单独的管理器。
7. 测试通知功能时记得关闭手腕感应
在Apple Watch上测试通知功能时,需要在其Companion(伙伴)应用的通用设置里关掉Wrist Detection(手腕感应)。
8. 若要强制退出应用,长按侧键打开Friends应用
要强制退出应用,就单击侧键打开Friends应用,然后再按一次(注意,强制退出应用不代表强制退出扩展)。
9. 尽可能地精简willActivate操作,缩短加载时间。
10. 先Watch后iPhone App
如果用户在你的iPhone应用之前抢先发布Watch App就不妙了,所以留点心,别让苹果的应用审核快你一步发现问题。