私はバックグラウンドでも常に実行されるvoipアプリケーションを持っています。 私はバックグラウンドにいるうちに、メインスレッドから呼び出しています。(ネットワークが失われたと診断した場合にネットワーク接続を確立するため)PerformSelector遅延がバックグラウンドモードで実行されなかった後 - iPhone
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:60.0];
ただし、セレクタは、アプリがフォアグラウンドに戻るときにのみ実行されます。 特にセレクタをバックグラウンドで実行させるには何かを行う必要がありますか?
おかげ
編集:
-(void) reconectInBackgroundAfterDelay:(NSTimeInterval) dealy
{
NSLog(@"reconectInBackgroundAfterDelay");
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:dealy];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
私の代わりにこのコードを追加しましたが、まだ「再接続」の方法が提供される遅延の後に呼び出さなっていません。 私はすでに背景にいるうちに "reconectInBackgroundAfterDelay"メソッドを呼び出します。
他の提案はありますか?
編集2 解決策が見つかりました。下記を参照
ありがとう、それはうまくいきます。 –
私のアプリケーションもvoipアプリケーションです。しかし、私のアプリは最初に登録する前にサーバからファイルをダウンロードしていました。ソリューションを使用してダウンロードを続けることは可能ですか? –
ここには[http://stackoverflow.com/questions/14828955/download-files-using-http-request-in-background-in-iphone-above-ios-4-0#comment20777172_14828955] [私の質問] –