使用URL方案的iOS应用程序间通信

使用URL方案的iOS应用程序间通信,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,我在同一台设备上安装了两个iPhone应用程序,应用程序A和应用程序B。应用程序A没有任何远程服务器连接。应用程序A必须调用应用程序B进行远程服务器通信。应用程序B将进行服务器调用并将响应返回给应用程序A。我想使用“Apple URL方案”进行此应用程序间通信。问题是,当应用程序A调用应用程序B时,应用程序A将转到后台,而应用程序B将转到前台。但是我希望这种交流在没有用户通知的情况下进行。应用程序A应始终位于用户的前台 所以解决方案可以是这样的。应用程序A调用应用程序b进行服务器调用。应用程序A

我在同一台设备上安装了两个iPhone应用程序,应用程序A和应用程序B。应用程序A没有任何远程服务器连接。应用程序A必须调用应用程序B进行远程服务器通信。应用程序B将进行服务器调用并将响应返回给应用程序A。我想使用“Apple URL方案”进行此应用程序间通信。问题是,当应用程序A调用应用程序B时,应用程序A将转到后台,而应用程序B将转到前台。但是我希望这种交流在没有用户通知的情况下进行。应用程序A应始终位于用户的前台

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


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

可以部分处理

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


但是b必须呆在前台才能调用返回a的url,你可以尝试类似的方法。我在这里进行理论推导,不确定步骤5-6是否真的有效,但我认为值得一试

  • 应用程序A通过URL方案调用应用程序B:
    openUrl:@“appB://startsomething”
  • 应用程序B变为活动状态,用户将看到该开关
  • 应用程序B启动网络通信并立即将控制发送回应用程序A:
    openUrl:@“appA://resume
  • 应用程序A变为活动状态,用户将再次看到该切换(所以本质上应用程序A将切换到应用程序B并返回)
  • 与此同时,应用程序B正在处理网络请求,完成后再次使用openUrl向应用程序A发送信息:
    openUrl:@“appA://data=GOT_data”
  • 应用程序A已处于活动状态,但它应接收此呼叫并解析数据

如果有人修复了问题中的范围(如URL方案),您受到范围的限制。但如果有人释放自己,您可能会问或继续问,例如-应用程序扩展稍后是否有助于解决此问题。

当应用程序A进入后台时,它必须自动返回前台模式。是否可以在几秒钟内完成,以便用户看不到应用程序B正在运行?是的,它不会自动发生我想以编程方式处理它。为什么b在后台不能调用a。因为在后台意味着它不能做某些事情。iOS中是否有其他应用程序间通信解决方案可用于此场景?没有用户交互/至少不公开;)私下里当然有XPC,但对我们来说..通过应用程序间通信发送数据有大小限制吗?有没有可能使应用程序B没有任何UI,这样用户将始终看到应用程序A?没有。你不能有一个不带用户界面的应用程序UI@sha当应用程序A再次激活时,它是否会改变应用程序以前的状态?@dariru这取决于您的操作方式将在appA中实现使用URL打开的处理程序。你可以做任何你想做的事情。如果用户卸载你的一个应用程序会发生什么?我无法想象你为什么需要两个应用程序…避免更新
应用程序A
?如果你明确你的想法,也许我们可以解决根本问题。@donmarkusi这是客户端的要求。可能存在多个问题我可以从同一供应商获得设备中的应用程序。但是只有一个应用程序可以访问远程服务器。设备中的其他应用程序需要与此应用程序通信以实现远程服务器连接。@SinuVarghese我也在尝试实现相同的过程。您在哪里可以完成此要求?谢谢!