使用URL Schemes进行iOS Inter App通信

时间:2014-09-03 08:18:57

标签: ios objective-c cocoa-touch

我在相同的设备,应用程序A和应用程序B中安装了2个iPhone应用程序。应用程序A没有任何远程服务器连接。 app A必须调用app B进行远程服务器通信。应用程序B将进行服务器调用&将返回对应用A的回复。我想使用' Apple URL Schemes'这个Inter App通信。问题是,当应用A调用应用B时,应用A将转到后台,应用B将进入前台。但我想在没有用户注意的情况下进行此通信。应用A应始终位于用户的前台。

所以解决方案可以是这样的。 app A为服务器调用调用app b。应用程序A将进入后台模式,应用程序B将进入前台。应用A中的方法将检测背景模式&将它带回前景。类似地,应用B中的方法将检测前景模式&将在几秒钟内将其恢复到后台。因此,当应用程序切换时,用户将只看到一些闪烁的屏幕。应用B将在后台执行任务&将结果返回给应用A.

我想知道这是否可以在iOS中处理?非常感谢任何建议。

3 个答案:

答案 0 :(得分:6)

你可以试试这样的东西。我在这里理论化,不确定步骤#5-6是否真的有效,但我认为值得尝试

  • App A通过URL方案调用app B:openUrl: @"appB://startsomething"
  • App B变为活动状态,用户将看到该开关
  • App B启动网络通信并立即将控制权发送回应用程序A:openUrl: @"appA://resume
  • 应用程序A变为活动状态,用户将再次看到该切换(基本上应用程序A将轻弹到应用程序B并返回
  • App B正在处理网络请求,当它完成时,它再次使用openUrl向App A发送信息:openUrl: @"appA://data=GOT_DATA"
  • App A已处于活动状态,但应接收此调用并解析数据

答案 1 :(得分:1)

可以部分处理。

a可以使用b进行服务器调用

但是b必须保持在前台以调用url回到

答案 2 :(得分:0)

如果在问题中修改范围(如URL方案),则受范围限制。但是,如果一个人自由,可能会问或继续询问 - 例如,App扩展程序稍后会帮助解决这个问题。