【问题标题】:Requesting data from a Today Extension从 Today Extension 请求数据
【发布时间】:2015-05-16 20:53:47
【问题描述】:

看起来 WatchKit 是使用 ios8 中的相同扩展机制构建的。

我开始制作今日扩展并通读指南。它说数据是使用 App Groups 共享的,就像 WatchKit 中的情况一样,但与 WK 不同,它似乎是在说你应该:

  • 不假定父应用正在运行
  • 唤醒它以获取数据

所以我的问题很简单:我错了吗?我想从应用程序中获取一些信息。似乎我可以获取上下文对象并调用 openURL 并要求应用程序刷新通道中的数据,然后让我的扩展程序监听更新的通知。但我找不到任何这样做的例子。

【问题讨论】:

    标签: ios8 ios8-extension ios8-today-widget


    【解决方案1】:

    在这种情况下,这可能不是您想要的。您可以使用扩展上下文打开由包含应用程序处理的 URL。但是当您这样做时,父应用程序将出现在前台,您的今天扩展程序将不可见。如果您想切换到应用程序,那很好,但如果您只想获取一些数据同时保持扩展程序可见,那就不好了。

    通常的方法不是向包含应用程序请求数据,而是将数据存储在应用程序和扩展程序都可以直接读取数据的位置。这就是使用应用程序组的意义——您将数据保存在组目录中,扩展程序会读取它需要的内容。这不需要包含的应用程序正在运行,也不会启动应用程序。

    配置应用组后,您可以使用-[NSFileManager containerURLForSecurityApplicationGroupIdentifier:] 找到位置。将您的数据放在那里,任何具有适当组功能的应用或扩展程序都可以使用这些数据。

    【讨论】:

    • 是的,我明白App Groups的意思,做了一个手表应用。他们的问题是我没有任何方法让包含的应用程序知道我现在想要更新这些数据。这就是我试图在问题中指出的。所以确定我可以并且正在使用那里共享的数据。只是我需要一些来自包含应用程序的按需数据,保证会更新。
    • 感谢有关应用程序通过 openURL 调用进入前台的说明。当然可以排除这种情况。
    • 您需要应用程序和扩展程序之间的通知。一个快速的方法是使用MMWormhole。有关其他选项,请参阅my blog post on the topic
    • 但是当应用程序处于后台时,您不会收到 mmwormhole 的更新......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多