iOS无法为后台模式“为VoIP使用配置其中一个应用程序套接字”

时间:2013-03-04 08:32:21

标签: ios objective-c sockets voip

即使应用程序被暂停,我也试图将我的应用程序设置为侦听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);
}

当我单步执行它看起来很好但不幸的是它不起作用。每当应用程序从前台转到后台/挂起时,连接都会丢失,并且忽略来自服务器的任何输入。我不知道套接字的配置是否可以像这样完成,并且找不到答案。

2 个答案:

答案 0 :(得分:1)

这是我在这个论坛上的第一篇文章。 但我发现这是有效的。

  1. 在info.plist文件中设置VOIP
  2. CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);

    CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);

  3. 使用TCP套接字

  4. 它不适用于UDP套接字。如果我错了,请编辑这篇文章。

答案 1 :(得分:0)

您使用的是iPhone 5S还是5C?

尝试使用iPhone 5或iPad 2等设备

这些设备(可能是iPad Air,无法确认......)存在一个已知问题,有关VOIP插座,已报告错误报告,我们仍在等待Apple修复它... < / p>