iOS アプリが終了すると、一連のローカル通知が登録され、特定の時間にバッジ番号が更新されます。ローカル通知はポップアップを表示せず、バッジを更新するだけです。マルチタスクをサポートしていない私の古い iPod touch では、これは完全に機能します。しかし、私のマルチタスク対応デバイスでは、非常に奇妙なバグが発生しています。アプリを「終了」すると (つまり、アプリはバックグラウンドでまだ実行されていますが、別のことをしている場合)、ローカル通知が起動しません。アプリがバックグラウンドにあるときにローカル通知が起動しない理由はありますか?
ローカル通知を作成するコードはループで実行されます (私はそれらの束を作成します):
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.applicationIconBadgeNumber = totalCount; // a number generated earlier in the code
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.fireDate = endDate; // a date generated earlier
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[localNotification release];
また、アプリのデリゲートに次の関数を作成しました。これにより、アプリがバックグラウンドに入る前に設定されている通知の数がわかります。
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"# Notifications: %d", [[[UIApplication sharedApplication] scheduledLocalNotifications] count]);
}
アプリは、バックグラウンドに入ると、常に 64 個の通知 (設定する必要がある数) があることを通知します。