バックグラウンドにあるタスクをなんとかして「ウェイクアップ」して、ネットワーク上の何かをすばやくチェックできるかどうかを知りたいのですが、これはUILocalNotificationで実行できると思いますが、何を試しても、アプリがバックグラウンドにあるときにdidReceiveLocalNotificationに何も実行させることができませんでした。起動後、ホームボタンを押してすぐにアプリを閉じます(ローカル通知が起動するまでに10秒の遅延があります)。このコードは、アプリがフォアグラウンドにあり、そこに座っているだけで完璧に機能します...
アプリデリゲートヘッダーファイル:
UILocalNotification *localNotif;
テストのために、appDelegateスタートアップですばやく起動するようにローカル通知を設定しました。
localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; // the date you want the notification to fire.
localNotif.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
NSLog(@"setup the timer for 10 seconds");
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIApplicationState state = [application applicationState];
NSLog(@"getting kicked");
if (state == UIApplicationStateInactive) {
// Application was in the background when notification was delivered.
NSLog(@"INACTIVE..");
} else {
NSLog(@"ACTIVE..");
}
}