iOS VOIP 应用程序在后台不接受新的套接字连接

Posted

技术标签:

【中文标题】iOS VOIP 应用程序在后台不接受新的套接字连接【英文标题】:iOS VOIP app does not accept new socket connections in background 【发布时间】:2012-08-31 17:28:29 【问题描述】:

我正在尝试实现一个 ios VOIP 应用程序。

我正在使用 GCDAsyncSocket 在端口上侦听连接。我确实在 info.plist 中添加了所需的后台模式,并将 readstream 和 writestream 注册到 kcfNetworkServiceTypeVOIP。

我还添加了 KeepAliveTimeOutHandler 来唤醒应用程序。处理程序块只是将唤醒时间打印到标准输出。

只要应用程序在前台,新连接就会被接受,但当应用程序在后台时,应用程序不会被唤醒,并且当应用程序再次移动到前台时,所有尝试的连接都会发送到套接字。

我搜索了许多解决方案,但无法使其正常工作。

提前致谢。

【问题讨论】:

可能是因为苹果只是为你存储了连接的socket,所以通过这些sockets的消息可以到达,但是新的socket无法建立。我见过其他人也有这样的问题。 我也遇到了这个问题,我读了下面的博客但没有帮助:raywenderlich.com/29948/backgrounding-for-ios 【参考方案1】:

我不确定它是否仍然与您相关,但以防其他人阅读此问题。 正如this one 中关于*** 的其他类似问题中所讨论的,例如,您只能拥有一个处于 NetworkServiceTypeVOIP 模式的套接字。否则它们都将不起作用,您的应用程序将不会唤醒并且不会接受新连接。

【讨论】:

以上是关于iOS VOIP 应用程序在后台不接受新的套接字连接的主要内容,如果未能解决你的问题,请参考以下文章

iOS 4 VOIP 应用程序在后台响应

即使应用程序已注册为 VOIP,iOS9 套接字连接也会在应用程序暂停时终止

iOS voip 应用程序休眠和可达性已更改,我可以收到通知吗?

iOS 应用因 VoIP 后台模式而被拒绝

iOS 13 在后台没有收到 VoIP 推送通知

iOS 上的 VoIP 套接字 - 未收到通知