iOS 应用程序可以通过套接字进行通信吗?

Can iOS apps communicate via sockets?

我要为 iOS 开发一些应用程序。他们可以通过套接字相互通信吗?假设一个应用程序作为服务器运行(即使在后台模式下),另一个作为客户端连接到服务器应用程序并执行一些通信。它是否违反任何 App Store 规则?如果我的想法由于某种原因不起作用,iOS 中是否有可用的 IPC?

当然可以,而且不违反任何规则。

只是 CoreFoundation 库。

如果它已经全部写在官方 Apple 文档中,我就没有必要向您描述它:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/UsingSocketsandSocketStreams.html

您可以在这里找到示例、所有方法以及您可以做和不能做的事情。

编辑:

您没有说清楚,但您似乎希望这些应用 运行 在同一台设备上。你可以这样做,但这意味着一个应用程序必须在后台 运行,为此你需要某种黑客攻击(例如:后台更新位置模式开启)并且不会通过苹果商店.您需要一个很好的理由让您的应用程序 运行 在后台运行(后台音乐、健身应用程序在后台更新位置等)

此外,这是一个重复的问题:

iOS - Is it possible to communicate between apps via localhost?

只要您的应用程序在同一个应用程序组中,那么是的,套接字 IPC 是允许的。如果没有,那就没有。套接字映射到文件描述符(Berkeley 套接字),这些文件被沙盒化到应用程序或应用程序组。更多信息:http://ddeville.me/2015/02/interprocess-communication-on-ios-with-berkeley-sockets