iOS Voip唤醒电话

时间:2014-03-31 22:22:47

标签: c++ ios qt sockets

我有一个应用程序是套接字服务器应用程序。我想在iOS上使用它(不是app store)。我试图像苹果文档中提到的那样绑定我的C ++程序的本机套接字,但是没有发生任何事情。

C ++程序正在使用QTcpServer的信号/插槽。我有一些像这样的代码:

driver = ProxyDriver::getInstance(5150);
    NSLog(@"Socket descriptor %i" , driver->socketDescriptor());
    CFReadStreamRef readStream;
    CFWriteStreamRef writeStream;

CFStreamCreatePairWithSocket (kCFAllocatorDefault, driver->socketDescriptor(),  &readStream, &writeStream);
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);

driver-> socketDescriptor()返回我的QTcpServer监听套接字的int。

我发布的代码在我的app代理“applicationDidEnterBackground”中,我在.plist文件中启用了“Voice over IP”。

然而,这似乎很奇怪 - 如果我在应用程序处于后台时对侦听套接字的IP地址执行netcat - 它不会唤醒并调用我在Qt中定义的“接受连接”插槽应用程序。但是,只要我将应用程序带回前台,就会调用插槽。

我做错了什么?在创建流对之前,我是否需要连接套接字?

1 个答案:

答案 0 :(得分:0)

是的,在应用程序转到后台之前,套接字需要连接到服务器,否则iOS将无法保持“活着”

您无法使用侦听套接字来实现VOIP后台功能。