使用套接字的iOS应用程序之间是否可以进行进程间通信

时间:2014-10-15 02:00:20

标签: ios sockets ipc

我在互联网上经历了很多文章,大多数人说IOS应用程序允许IPC使用协议处理程序(URL Schemes)。但是,如果一个应用程序打开一个端口而另一个应用程序尝试连接它,我们是否可以使用套接字实现IPC?

2 个答案:

答案 0 :(得分:3)

iOS8 通过为所谓的“应用程序组”公开 machport 来引入IPC支持。看看这个很棒的教程:

http://ddeville.me/2015/02/interprocess-communication-on-ios-with-mach-messages/

它需要一些设置(在开发门户中定义应用程序组,生成适当的权利等等)但实际上并不那么困难,Xcode 6会自动完成大部分工作(一般只启用“应用程序组”)能力部分)。

我可以确认,它有效(我能够创建2个互相发送消息的应用程序)。

在iO7 上没有对IPS的官方支持,但如果您不打算将应用程序上传到AppStore,则可以尝试利用应用程序间的音频通信来实现此目的。 查看Apple的代码示例,该示例展示了3个应用之间的应用内声音数据流:

https://developer.apple.com/library/ios/samplecode/InterAppAudioSuite/Introduction/Intro.html

相关的WWDS视频:

https://developer.apple.com/wwdc/videos/#602

我没有尝试将其用于非音频用途,但无法看到它不应该工作的原因。数据速率很高,声音数据只是字节,不必重定向到扬声器,但是你喜欢解释它。

当然,它会在AppStore评论中被拒绝,但它对于企业或自己的使用仍然没有问题。

答案 1 :(得分:1)

不,这不是出于几个原因。 1)Apple内部不允许这样做,并且有安全层来防止这种情况发生。 2)应用程序在短暂延迟后激活applicationDiD / WillEnterBackground,此时你可以与它交互的方式一落千丈。

如果您确实想在应用程序之间发送数据,请设置一个带有证书的服务器以匹配您的应用程序,这样您就可以使用APN(苹果推送通知)以静默推送方式向应用程序发送数据。然后,在服务器上设置触发这些发送的端点,并让应用程序使用服务器公开的API。