从Today Widget Extension启动Parent iOS App Service调用

时间:2016-03-08 03:33:22

标签: ios ios8 nsuserdefaults ios8-today-widget

我正在开发一个POC iOS应用程序,最终将通过内部企业MDM解决方案发布。该应用程序本身非常简单。它快速调用内部端点返回一些简单的json,然后在屏幕上显示它。同时,我还有一个应用扩展程序(今日小工具),也显示了一小部分数据。

我创建了一个包含服务调用的共享框架,以及我正在使用的任何其他常用代码。不幸的是,如果我在服务端点所在的内部网络上,那么父应用程序和扩展程序都可以正常工作。但是,此应用程序并不总是在我们可信赖的内部网络上。因此,我们使用MDM解决方案提供的安全容器包装构建,并为我们的特定内部端点打开流量。这适用于应用程序,但我们的MDM提供程序目前不提供类似的App Extensions功能。

因此,我正在努力提出创造性的方法,以最好地确保我的今日小工具中的数据是最新的,而无需直接拨打服务电话。为此,我通过应用程序组在应用程序和扩展程序之间共享数据,但如果服务调用仅来自父应用程序,并且用户很少访问父应用程序,则数据仍将过期。 / p>

为了模拟从应用扩展程序进行服务调用以更新数据,我想要一种代表父应用程序调用服务的方法,然后更新应用程序和扩展程序之间共享的NSUserDefaults数据。

所以我的问题是:在父应用中启动该服务调用的最佳方式是什么?它甚至可能吗?我知道Apple提供了'openURL'方法,允许扩展程序打开它的父应用程序,但我不想实际打开应用程序。我希望应用程序在后台运行,而扩展程序代表它进行服务调用。

我一直在研究以下内容,但运气不佳:

  • 父应用程序在NSUserDefaults上有一个观察者,观察一个特定的密钥,当被应用程序扩展修改时,将触发服务调用以更新正在显示的共享数据。不幸的是,我不相信这会有效,因为只要父应用程序在后台,NSUserDefaultsDidChangeNotification就不会在父应用程序中被解雇。
  • 从应用扩展程序向父应用程序发送本地通知,告知其启动服务调用并更新通过应用程序组共享的数据。很遗憾,无法通过应用扩展程序访问UIApplication.sharedApplication()

有关模拟服务电话的方法的任何建议,让我的今日小工具最有可能获得最新的信息吗?

注意:显然,让Today Widgets访问内部资源有自己的安全问题,但对于这个POC,数据是非敏感数据,只能在内部生存。

0 个答案:

没有答案