2013-02-25 5 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. 

EDITコメント

に関するVoIP接続は(ほとんどです)通常の接続。つまり、データが入っていれば、アプリはバックグラウンドで実行を再開します。タイムアウトハンドラは、がタイムアウトを回避するために相手側にpingを行いたい場合です。もう少し詳しい情報は、TN 2277です。

+0

VoIPアプリケーションのタイムアウトハンドラをどのように処理するか考えていますか。私はサーバーに接続して着信通知を受けたいと思っていますか? – Newbee

+0

通常のC++ソケット(目的のCソケット-NSstreamではなく)をVoIP接続として使用できますか?はいの場合は、正しい方法でそれを行う方法を教えてください。 "iOSのでは、POSIXのネットワークが推奨され":[Appleの](http://developer.apple.com/library/ios/#documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SocketsAndStreams/SocketsAndStreams.html)のドキュメントから – Newbee

+1

。しかし、あなたが難しい道を行くなら、試してみることができます。 ObjCだけを避け、Cバインディングに満足したい場合は、[CFNetwork](https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html)を使用してください。 – Matthias

関連する問題