【问题标题】:Is Inter Process Communication possible between iOS applications using Sockets?使用套接字的 iOS 应用程序之间是否可以进行进程间通信?
【发布时间】:2014-12-09 23:37:03
【问题描述】:

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

【问题讨论】:

  • 非常值得怀疑,甚至在最好的条件下也只能在有限的时间内在后台暂停应用程序。

标签: ios sockets ipc


【解决方案1】:

iOS8 通过为所谓的“应用程序组”公开 ma​​ch 端口 来引入 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审核中被拒,但企业或自用还是可以的。

【讨论】:

    【解决方案2】:

    不,不是有几个原因。 1) Apple 内部不允许这样做,并且有安全层来防止这种情况。 2) 应用程序在短暂延迟后触发 applicationDiD/WillEnterBackground,此时您可以与之交互的方式直线下降。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多