1

VOIP アプリケーションでは、setKeepAliveTimeout を使用して 10 分ごとに PING パケットをサーバーに送信しています。すべて正常に動作しますが、アプリケーションがフォアグラウンドになったときにハンドラーが呼び出されるのを停止する方法がわかりません。

例:タイムアウトを設定する方法は次のとおりです

 [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }];

バックグラウンド ハンドラー:

- (void)backgroundHandler
{
    printf("10 minute time elapsed\n");
    // do some action...
}

上記の関数は、アプリケーションがフォアグラウンドになった後でも呼び出されています。Apple のドキュメントを読んで、ハンドラーを nil に設定して停止しました。私はapplicationWillEnterForegroundで以下のように試しました

[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:nil];

それでも10分おきに電話がかかってきます。これを処理する方法、フラグのみを使用する必要がありますか。

どんな助けでも本当に感謝しています。

4

2 に答える 2

4

あなたはこのようにすることができます

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
    [[UIApplication sharedApplication] clearKeepAliveTimeout];
}
于 2013-09-04T06:24:32.990 に答える
2

You have to invoke clearKeepAliveTimeout to stop the timer. setKeepAliveTimeout: is designed to keep a voip connection on and that's why it's periodically called.

于 2013-09-04T06:21:51.120 に答える