在同一iPhone上运行的应用程序之间透明地进行通信

时间:2014-03-04 19:59:53

标签: ios network-programming ipc

有许多类似的问题,所以这个问题的重点不是重复。

前提条件

  • 两个iPhone应用(单独的捆绑ID),您可以完全控制每个应用的源代码
  • 用户在同一部手机
  • 上安装了这两个应用
  • 没有与其他主机的网络连接
  • 没有越狱
  • 假设应用程序具有在后台无限期运行的正确功能

目标

  • 在应用之间双向沟通
  • 尽量减少或消除用户观察到的此类通信正在进行的证据
  • 后台应用程序将有新信息需要转到前台应用程序,因此需要推送或轮询机制
  • 理想情况下可以在生产中使用,因此不使用私有API

所以问题是“可以吗?”

以下是关于“已经尝试过”的一些注释 - 已经考虑过不同的方法。

很好理解的攻击媒介

  • 使用其他主机 - 合理但由于延迟而在问题定义中排除
  • 自定义网址方案 - 一种非常好的方法,但由于动画和上下文切换而不理想,尤其是在轮询时
  • 在Settings.app下的东西 - >隐私(例如通讯录) - 可以使用,但不会要求权限

可能无效的事情

  • “打开...”api
  • 以某种方式共享文件系统
  • 蓝牙

可能的想法

Apple已小心避免暴露此功能。有没有人想出办法呢?

1 个答案:

答案 0 :(得分:2)

还有一个想法:在iPhone上的一个应用程序中启动本地Web服务器,并将其用于应用程序之间的通信。

这是implementation of such server

这是usage example

我自己没有尝试过这个解决方案,但看到了使用这个想法进行通信的应用程序。

此外,我认为Apple故意不实施任何简单的应用程序之间的通信方式。现在你可以让你的应用程序就像它是整个设备上唯一的一个应用程序,只有很少的例外,如内存使用等等。一旦这将是一些简单的方法在应用程序之间进行通信,我们将在更复杂的环境中找到自己。作为程序员,我们需要考虑更多的限制,规则和可能性。

但我也想在应用程序之间进行一些沟通,可以使用此工具实现许多好点子。