2013-02-25 139 views
5

我們正在研究一個VoIP應用程序,當我的應用程序變爲後臺時,我一直在嘗試使用setKeepAliveTimeout:處理程序:保持連接處於活動狀態。根據蘋果的文件,他們要求至少600秒作爲超時。其實我們保持較少的超時值,是否有可能以較少的時間處理?如何使用setKeepAliveTimeout:處理程序 - IOS?

如果超時,如何使用處理程序重置計時器或請求更多的時間,以便我可以保持我的連接一直活着(接收來電)?

下面是我在做什麼...

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    BOOL backgroundAccepted = [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }]; 
    if (backgroundAccepted) 
    { 
     NSLog(@"VOIP backgrounding accepted"); 
    } 
} 




- (void)backgroundHandler { 

    NSLog(@"### -->VOIP backgrounding callback"); // What to do here to extend timeout? 
} 

回答

2

Apple的文檔:

The minimum acceptable timeout value is 600 seconds. 

編輯關於您的評論

VoIP連接是(幾乎)正常連接。也就是說,如果你的數據包含了數據,你的應用會在後臺恢復執行。超時處理程序適用於you想要ping對方以避免超時的情況。多一點信息給TN 2277

+0

你有任何想法如何處理VoIP應用程序的超時處理程序。我想保持連接到服務器並獲得來電通知? – Newbee 2013-02-25 10:29:09

+0

我們可以使用普通的C++套接字(不是客觀的C socket-NSstream)作爲VoIP連接嗎?如果是的話,你能指出我正確的方向怎麼做嗎? – Newbee 2013-02-25 11:52:05

+1

從[Apple's](http://developer.apple.com/library/ios/#documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SocketsAndStreams/SocketsAndStreams.html)文檔:「在iOS中,不鼓勵POSIX網絡」。但是,如果你想努力工作,你可以嘗試一下。如果您只想避開ObjC並對C綁定感到滿意,請使用[CFNetwork](https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html)。 – Matthias 2013-02-25 12:09:03

相關問題