共享

2017-09-02 96 views
2

我想了解如何开发为Apple关注watchapps watchapp及其并发症之间的数据模型,有一点似乎有点困难,我说:应该如何的数据要在watchapp和并发症控制器之间共享?共享

大多数的例子,我在网上看到遵循以下顺序:

1 - 对ExtensionDelegate下载数据,并使用它的InterfaceController;

2 - 让ComplicationController从ExtensionDelegate

3获取数据 - 添加一个后台任务的ExtensionDelegate,使其下载将由双方InterfaceController和ComplicationController使用,更新都更新的数据。

所以我的数据是在一个ExtensionDelegate收藏。我在想:

1 - 启动应用程序时,谁应该首先得到我ExtensionController下载数据?我的ComplicationController或我的InterfaceController?我问这个问题是因为在xcode上有一个模拟器,所以有时我不知道在启动应用程序时首先调用哪一个。应用程序只能在用户打开应用程序后才开始它的生命周期,从而强制首次加载数据,还是在安装应用程序后启动?还是应该在ExtensionDelegate添加一个标志,标志,如果没有下载的数据,有被下载的数据,有可用的数据(即,收藏不为空),因此,无论是ComplicationController或InterfaceController可以触发第一数据下载?

2 - 虽然我的后台下载任务的作品,我觉得过了几个小时,我的应用程序有打开的时候,就好像是以前从未打开,从而引发一个新的数据下载到被重新加载。其上的数据与已下载并由ComplicationController显示的数据不同。解决这个问题的好策略是什么?任何我应该检查的指针?

回答

0

我不知道如果我理解你的问题的权利。无论如何,我通过以下方式将数据从iPhone传输到手表:

假设首先安装了iPhone应用程序和手表扩展程序,iPhone应用程序尚未启动,但手表扩展程序正在运行背景,以便它可以在iPhone应用程序运行后立即与iPhone通信。
进一步假设,手表显示的是一款带有复杂功能的手表。

当iPhone应用程序启动时,它首先发送并发症数据使用transferCurrentComplicationUserInfo(_:)手表。所以,表盘显示了复杂的数据。
随后,iPhone发送使用sendMessage(_:replyHandler:errorHandler:)的消息。此消息告诉手表分机iPhone即将发送数据。由于发送数据可能需要很长时间,因此初始消息用于显示提示从手表上的iPhone加载数据。
随后我使用updateApplicationContext(_:)发送数据。

的第二个情况是,iPhone应用程序正在运行,但手表扩展还没有。
现在,只要手表扩展程序启动,InterfaceController使用sendMessage(_:replyHandler:errorHandler:)立即发送消息到iPhone,它需要数据。当接收到该消息时,执行与上述相同的序列:复制数据被发送,消息被发送,数据传送将很快开始,并且数据传送被启动。

这工作没有问题。

关于您的问题:
在我的情况下,InterfaceController一旦被激活就会启动传输。
但是,当手表扩展程序安装但尚未启动时,我的手表表面已经显示了我的(默认)复杂数据。这意味着ComplicationController实际上正在运行,即使手表扩展程序和iPhone应用程序都没有运行。因此可能以这种方式开始初始数据传输。
我没有你在第二个问题中提到的问题,所以我什么都不能说。

+0

感谢您的回答。但是,我的问题(和我的问题)不涉及从iPhone传输数据。我的问题主要与手表从互联网获取数据有关,而不是存储在iPhone上的数据。 – francisaugusto

+0

对不起。这对我来说并不清楚。 –