× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
applicationDidEnterBackgroundの中とかでローカル通知のスケジューリングを行う。
アプリを起動したときにスケジュール済みの通知を全削除したりするが、そのタイミングは applicationWillEnterForeground ではいけない。 必ず通るとは限らないからである。 起動 →バックグラウンドへ(ここで通知スケジューリング) →他のアプリを起動するなどしているうちに、アプリが自然にシャットダウンする →アプリを起動 →バックグラウンドへ(ここで通知が2重にスケジューリングされる!) というわけで、通知を全削除する( [[UIApplication sharedApplication] cancelAllLocalNotifications]; )箇所は、 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url; - (void)applicationWillEnterForeground:(UIApplication *)application; の4つ…とかはめんどいので、 applicationDidEnterBackground でスケジューリング登録する直前に全削除、が一番楽であろう。 PR |
|