我的第一个应用(让我们称之为CoreApp
)在后台运行。当此CoreApp
收到静默推送通知时,我想将数据传递到我的第二个应用(UiApp
)。
自定义网址方案不是此选项,因为:
[[UIApplication sharedApplication] openURL:url]
何时返回NO
CoreApp
在后台。 UiApp
移动到
前景,但我想把它保留在后台。我正在考虑为两个应用添加voip密钥并通过套接字进行通信。
还有其他想法吗?这两个应用程序都不适用于appstore,所以我可以使用任何黑客。
修改
目标是在UiApp
收到通知时增加CoreApp
的徽章编号。所以,我希望将CoreApp
中的简单int号传递给UiApp
。
答案 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通知。