即使应用程序被暂停,我也试图将我的应用程序设置为侦听tcp-socket。我按照Apple文档中的描述在Info.plist中设置了voip-background模式。现在我被困在哪里说:“配置一个应用程序的套接字用于VoIP使用。”我试图用CFReadStreamSetProperty()方法做到这一点,但关键是我如何创建套接字。套接字的创建是通过标准的C-Library完成的,如下所示:
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);
}
当我单步执行它看起来很好但不幸的是它不起作用。每当应用程序从前台转到后台/挂起时,连接都会丢失,并且忽略来自服务器的任何输入。我不知道套接字的配置是否可以像这样完成,并且找不到答案。
答案 0 :(得分:1)
这是我在这个论坛上的第一篇文章。 但我发现这是有效的。
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType,
kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
使用TCP套接字
它不适用于UDP套接字。如果我错了,请编辑这篇文章。
答案 1 :(得分:0)
您使用的是iPhone 5S还是5C?
尝试使用iPhone 5或iPad 2等设备
这些设备(可能是iPad Air,无法确认......)存在一个已知问题,有关VOIP插座,已报告错误报告,我们仍在等待Apple修复它... < / p>