如何在2个后台应用程序之间传递数据

时间:2014-05-14 13:48:15

标签: ios voip iphone-privateapi

我的第一个应用(让我们称之为CoreApp)在后台运行。当此CoreApp收到静默推送通知时,我想将数据传递到我的第二个应用(UiApp)。 自定义网址方案不是此选项,因为:

  • [[UIApplication sharedApplication] openURL:url]何时返回NO CoreApp在后​​台。
  • 如果我通过网址方案打开,UiApp移动到 前景,但我想把它保留在后台。

我正在考虑为两个应用添加voip密钥并通过套接字进行通信。

还有其他想法吗?这两个应用程序都不适用于appstore,所以我可以使用任何黑客。

修改

目标是在UiApp收到通知时增加CoreApp的徽章编号。所以,我希望将CoreApp中的简单int号传递给UiApp

4 个答案:

答案 0 :(得分:2)

一个解决方案,但我不知道它是否对你有用(请指出你想要分享到第二个应用程序的数据类型,你想在第二个应用程序中使用它做什么,以及更特别的是:当你需要让你的第二个应用程序使用这些数据时)

看看UIPasteboard,

+ (UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create

创建一个粘贴板供您的应用程序使用(您可能希望将persistent属性设置为YES)。

然后,您可以使用addItems:方法向此粘贴板添加元素。当您启动第二个应用程序时,它可以查看粘贴板的内容,使用它然后将其删除。

答案 1 :(得分:2)

首先,看看我在应用之间共享数据的问题: Sharing info between multiple iOS apps

如果我是你,我会使用粘贴板或插座。

最重要的是,您可能有兴趣查看私有API:

SBSetApplicationBadgeNumber(mach_port_t* port, char* appID, int number);

它不受权利保护,您可以在另一个应用程序上设置徽章。

答案 2 :(得分:0)

每当CoreApp收到远程推送通知时,在服务器的后台调用URL,然后服务器增加徽章编号并向UiApp发送远程推送通知(带有新的徽章编号)。

答案 3 :(得分:0)

我决定使用2个voip应用程序并通过套接字进行通信。

功能:

SBSetApplicationBadgeNumber(mach_port_t* port, char* appID, int number);

在ios7上不可用,我没有找到类似的新api。

达尔文通知中心&当UiApp处于前台时,UIPasteboard工作正常,但当app暂停时,不会收到Darwin通知。