2014-03-31 106 views
1

我有一個應用程序是套接字服務器應用程序。我想在iOS上使用它(而不是應用商店)。我試圖按照它在蘋果文檔中提到的方式綁定我的C++程序的本地套接字,但是沒有發生任何事情。iOS Voip喚醒呼叫

該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。

我發佈的代碼位於我的應用程序委託「applicationDidEnterBackground」中,並且已在我的.plist文件中啓用「IP語音」。

但是,它似乎很奇怪 - 如果我在應用程序在後臺時對監聽套接字的IP地址執行netcat - 它不會喚醒並調用我在我的定義中的「接受連接」 Qt應用程序。但是,只要我將應用程序帶回前臺,該插槽就會被調用。

我在做什麼錯?在創建流對之前,我是否需要先連接套接字?

回答

0

是插座需要連接到App去後臺服務器之前,否則,iOS將不會保持「活着」

不能使用監聽套接字的VOIP背景功能。