【发布时间】:2013-03-04 08:32:20
【问题描述】:
我正在尝试设置我的应用程序以侦听 tcp-socket,即使在应用程序暂停时也是如此。如苹果文档中所述,我在 Info.plist 中设置了 voip-background 模式。现在我被困在哪里说:“配置应用程序的一个套接字以供 VoIP 使用。”。我正在尝试使用 CFReadStreamSetProperty() 方法来做到这一点,但关键是我如何创建套接字。套接字的创建是通过标准 C 库完成的,如下所示:
int mySock = socket(AF_INET, SOCK_STREAM, 0);
这是在现有库中的 .cpp 文件中完成的。这是我尝试为 VoIP 使用配置套接字:
CFStreamCreatePairWithSocket(kCFAllocatorDefault, sock, &readStream, &writeStream);
if(readStream && writeStream)
{
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
}
当我逐步浏览它时,它看起来不错,但不幸的是它不起作用。每当应用程序从前台转到后台/挂起时,连接就会丢失,并且来自服务器的任何输入都会被忽略。我不知道套接字的配置是否可以这样完成并且找不到答案。
【问题讨论】:
-
您是否将您的应用程序注册为
UIBackgroundModes为voip?如果不是这样,iOS 将不允许由于传入数据包而唤醒。 -
我面临同样的问题(使用 posix 套接字进行 voip)。你设法让它工作了吗?
标签: ios objective-c sockets voip