搜课云网 > 深圳达内IT教育 > 资讯总汇 > WatchKit开发技巧

WatchKit开发技巧

机构:深圳达内IT教育 时间:2016-07-27 11:06:02 点击:853

  直到didDeactivate方法被调用时,更新才能被安全的执行。(注意你不能在此方法中更新界面元素)这意味着如果你打算更新一个当前隐藏的视图控制器(例如你正在查看最顶部的模态控制器),你会需要执行当前控制器的willActivate方法,这个方法会在模态控制器消失的时候被调用。

  除包含在你的Watch app bundle中的assets之外,每个app 只允许5MB的高速图片缓存,通过extension使用 WKInterfaceDevice 中的方法引入和管理图片缓存。从extension发送图片到watch端需要消耗时间和电池电量,所以需要重用图片(即使只是用一次),这都是值得缓存的。如果使用 addCachedImage:name: 发送一张图片,那么这张图片会自动的被以PNG格式编码,并发送到缓存中。不论PNG是否是最佳的格式(但这是最安全的格式)。如果你的图片能以JPG的格式呈现,我强烈地推荐使用addCachedImageWithData:name: 来取代上述方法。以JPG格式编码图片和试用图片质量设置,不仅图片将会更快速地传输,同时也会拥有更多的缓存空间用于储存更多的图片。

  依据之前的建议,你可以在后台进程缓存图片(依据一个在开发者社区中的苹果雇员所述)。我在我的Watch app中,使用提前缓存图片这项技术。

  如果你使用前边提及到的图片缓存,这里没有内置方法决定删除使用过最旧的图片。如果你的app管理了许多图片,你会想要封装关于缓存的manager。

  为了测试Apple Watch上的通知,在Apple Watch配对的app的通用中设置关闭手腕检测。

  想要强制退出app,按住旁边的按钮,一段时间后再次按住它(注意强制退出你的app不会强制退出你的extension)。

  在willActivate中最小化处理的工作,以减少加载等待时间。

  考虑用户在使用iPhone app之前打开你的Watch app以及设计的一致性。App审核会发现这些情况。

  记住你的Watch app 是以extension的方式运行。你的Watch app的内存限制要比iPhone app要更为严格。如果处理大量的图片,在iPhone app上完成此项工作会更好(使用openParentApplication:reply:)。还得注意模拟器不会执行这些内存限制,所以必须在真实地设备上进行测试。

  为了发现你的app是否与Watch匹配,为Watch app共享的NSUserDefaults(使用 shared app group)设置BOOL值,你的iPhone app能够获取它。

  为了同步在iPhone与Watch之间的数据,你可以调用你的iPhone app执行所有的数据更新(使用 openParentApplication:reply:),或使用 Darwin notifications 在extension和iPhone app之间发送事件。Darwin notifications不支持数据装载,所以如果你想通过通知传输数据,可以查看非常有用的 MMWormhole 工程。

  你除了使用timer更新和刷新界面元素,还可以使用KVO,如果你的数据源支持。这就是我在我的Watch app中所使用的方法。使用这种方法,界面元素只会在它们改变的时候被更新,同时降低通讯消耗和节省电池电量。

  如果你需要跟踪控制器界面,在 awakeWithContext: 中考虑给self传输引用建立关系。我已经在我的app中通过我的 JBInterfaceController subclass 大量地使用这种模式。使用类似这类的技术让你如使用代理模式一样去工作。同时,更多以类似UIViewController方式考虑你的controller。

  WatchKit extension是前台的extension,所以如果你需要获得 Core Location 的授权允许,你只需要在授权需要时请求。

  除非你的场景需要,必须谨慎考虑你是否需要“在线更新”,即在Watch和iPhone之间立即同步。用户通常不会同时使用两个设备,所以在下一次Watch或iPhone app激活时简单地更新数据就能避免大量的同步逻辑。不幸的是看着watch与iPhone的模拟器的屏幕紧邻彼此,就很有可能去建立复杂的同步逻辑。也许我做了,但我没有告诉你。

  当你不能用程序创建和控制视图控制器时,你能明智地了解你是如何隐藏和显示视图元素。这会成为一个通用地WatchKit实践,例如,建立一个全页的label,如果有一则重要的消息需要展示时它可以被显示。或者,如果你有两个你需要编程选择的布局,可以包含它们到最上层的组,并在需要的时候让其隐藏和显示。

  更多资讯,请访问深圳iOS课程培训学校

师资介绍