修正済み— わかりました[[UIApplication sharedApplication] cancelAllLocalNotifications];
。予期していなかったときに誤作動が発生していました。
さて、あなたの問題があります。
助けてくれてありがとう、ただのダムコーダー症候群になってしまってごめんなさい。
次のようにローカル通知を作成しました。
- (void)scheduleNotification {
[[UIApplication sharedApplication] cancelAllLocalNotifications];
Class cls = NSClassFromString(@"UILocalNotification");
if (cls != nil) {
UILocalNotification *notif = [[cls alloc] init];
NSLog(@"%@", [NSDate date]);
notif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
notif.alertBody = NSLocalizedString(@"Hello.", nil);
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
NSLog(@"Notification scheduled at %@", notif.fireDate);
[notif release];
}
}
予想どおり、私のデバッグ ログは 10 秒先の正しい fireDate を出力します。アプリを離れなければ、application:didReceiveLocalNotification:
コールバックが成功します。
ここでの問題は、ボタンを押してこの通知をスケジュールし、ホーム ボタンを押してバックグラウンドに置く場合です。これを行うと、通知が発生することはなく、OS からアラート ビューが表示されることもありません。
ここで明らかなことを見逃しましたか?ここと Apple のドキュメントを調べてみたところ、明らかな何かを見落としているように感じました。
どんな助けでも大歓迎です。ありがとう。