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

Posted

技术标签:

【中文标题】iOS 4 VOIP 应用程序在后台响应【英文标题】:iOS 4 VOIP app responding in the background 【发布时间】:2010-08-13 15:26:31 【问题描述】:

我有一个 iPhone VOIP 应用程序,它可以处理使用 BSD 套接字设置的多路传输和接收(即电话会议)。我希望它能够在后台响应传入的请求,但是根据我对 ios 4 文档的理解,我只能通过将属性设置为 NSStreamNetworkServiceTypeVoIP 在 NSStream 对象(或 CFRead/WriteStream)上执行此操作.这有点问题,因为我的系统是基于 UDP BSD 套接字的应用程序。一切都在单个 UDP 套接字上接收和发送。

我是否需要重新编写我的音频发送/接收核心来处理 NSStreams,或者有没有办法让 iOS 4 以类似于 NSStream 的方式处理我的 BSD 套接字?我认为这可能是一个问题,因为 NSStream 是基于事件的。

是否有可能检测到应用程序何时进入后台并构建一个临时 NSStream 对象,该对象将通过相关处理将数据传递给该对象,然后正常继续?甚至可以创建一个 UDP NSStream 吗?

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以使用 CFSocketCreateWithNative() 从文件描述符创建套接字,然后使用 CFStreamCreatePairWithSocket() 创建一对流。它可能让您在 UDP 套接字上使用它们。如果流不读取数据,除非您提出要求,否则您可以直接使用 FD。

祝你好运!

【讨论】:

好的,它似乎确实有效。结果我无法在后台自动启动音频录制流,但它确实让我可以控制数据何时到达 UDP 端口(这非常值得了解!)

以上是关于iOS 4 VOIP 应用程序在后台响应的主要内容,如果未能解决你的问题,请参考以下文章

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

iOS 10:如何在应用程序处于后台时显示传入的 VOIP 呼叫通知?

在 iOS 13 设备中无法在后台/挂起状态下接收 VoIP 消息

即使应用程序未在后台运行,VoIP 推送通知也会自动打开应用程序,这在 iOS 中是不是可行?

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

即使应用程序未在后台运行,也可以自动打开应用程序的VoIP推送通知是否可以在iOS中使用?