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 10:如何在应用程序处于后台时显示传入的 VOIP 呼叫通知?
在 iOS 13 设备中无法在后台/挂起状态下接收 VoIP 消息