3

修正済み— わかりました[[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 のドキュメントを調べてみたところ、明らかな何かを見落としているように感じました。

どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

1

Apple のドキュメントの例を参照してください

timeZone を [NSTimeZone defaultTimeZone] に設定していないことが問題の原因ではないでしょうか? timeZone が設定されていない場合は、GMT が想定されます (デフォルトは nil)。

于 2011-06-11T02:27:00.560 に答える
0

わかりました、それが何であるかを見つけました、誤った[[UIApplicationsharedApplication]cancelAllLocalNotifications]がありました。バックグラウンドに入るときに送信されます。

于 2012-08-10T22:51:45.563 に答える
0

バックグラウンド タスクでコードをラップしようとしましたか?

于 2011-06-11T02:16:22.793 に答える