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

fun*_*oll 12 network-programming ipc ios

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

前提条件

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

目标

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

所以问题是"可以做到吗?"

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

很好理解攻击向量

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

可能不起作用的事情

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

可能的想法

Apple小心翼翼地避免暴露此功能.有没有人想出办法呢?

Van*_*ger 3

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

这是此类服务器的实现

这是用法示例

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

另外,我相信苹果故意不实现任何简单的方法来在应用程序之间进行通信。现在,您可以使您的应用程序就像整个设备上唯一的一个应用程序一样,除了内存使用等很少有例外。一旦这里出现了一些在应用程序之间进行通信的简单方法,我们就会发现自己处于更加复杂的环境中。作为程序员,我们需要考虑更多的限制、规则和可能性。

但我也希望有某种方式在应用程序之间进行通信,许多伟大的想法都可以通过这个工具来实现。