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

Posted

技术标签:

【中文标题】iOS 应用程序可以通过套接字进行通信吗?【英文标题】:Can iOS apps communicate via sockets? 【发布时间】:2015-03-04 14:54:01 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

只是 CoreFoundation 库。

如果苹果官方文档中已经全部写了,我向你描述它是没有意义的:

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

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

编辑:

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

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

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

【讨论】:

只是为了更详细(虽然我期待答案):“iOS 应用程序在同一设备上运行?” 我不明白。您希望应用在同一台设备上吗? 是在同一台设备上,一台作为服务器,一台作为客户端 在 iOS 中监听套接字有一些注意事项,诀窍是及时关闭它们,见forums.developer.apple.com/thread/85038#253216【参考方案2】:

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

【讨论】:

以上是关于iOS 应用程序可以通过套接字进行通信吗?的主要内容,如果未能解决你的问题,请参考以下文章

可以使用通知与 IOS 应用程序的主线程进行通信吗? (参见 performSelectorOnMainThread)

可以比 IPC 或套接字更直接地在进程之间进行通信吗?

iOS 应用程序可以通过 WiFi 与 MFi 配件通信吗?

使用套接字在同一主机中的进程之间进行通信,可以使用UDP吗?

iOS socket 使用与原理

iOS-socket