WatchKit 扩展:如何从主机 iOS 应用读取数据?

WatchKit extension: how to read data from host iOS app?

问题背景:
主机 iOS 应用程序以 10 fps 的帧速率动态生成 UIImage,我只是想从 WatchKit 扩展中检索 UIImage 数据并以相同的速率在 Watch 应用程序上显示图像。

我目前的解决方案:
我为 iOS 应用程序和 WatchKit 扩展设置了一个应用程序组。 iOS 应用程序将每个帧写入一个 png 文件(大约 10k)到组共享位置,WatchKit 扩展使用 NSTimer 以相同的速率读取文件,然后 post 将数据发送到 Watch 应用程序。

问题:
它的性能非常差。 Watch 应用程序丢失帧,因此动画呈现非常糟糕。根本原因可能是 WatchKit 扩展的文件读取操作,或者数据从扩展到手表应用程序的无线传输。

有没有人有类似需求?
是否有更好的解决方案:

  1. 从 iOS 应用读取数据到 WatchKit 扩展?
  2. 在手表应用程序上显示动态图像?

您的性能很差,因为 运行 周期从来都不是完美的,同步调用也不是完全对齐的。

解决这个问题的正确方法不是像您一样即时生成图像,而是在您需要它们之前生成图像。

您可以在 Xcode 中生成这些图像并将它们包含在您的 WatchKit 应用程序的捆绑包中(如果它们是您会经常使用的一般内容),您可以在 WatchKit 应用程序启动时生成它们(如果你知道你需要什么,并且你以后会需要它们),或者你可以在你真正需要它们之前生成它们。

如果选择后两者之一,最佳做法就像您现在所做的那样,将它们存储在共享应用程序组中(不使用 openParentApplication:reply:)。但是,同时访问和写入同一组时必须小心。