1

UILocalNotification次のロジックを使用して 30 秒ごとに実行するようにセットアップしようとしていますが、動作がおかしいようです。2 つの問題があります。

  1. 通知が発生すると、30 秒ごとに 1 回ではなく、一度に多数の通知が発生するようです。
  2. アプリアイコンバッジの数が増えていないようです。1のままです。

誰かが私が間違ったことを解決するのを手伝ってくれませんか?

// Create 'base' notification we can use
UILocalNotification *baseNotification = [[UILocalNotification alloc] init];
baseNotification.timeZone = [NSTimeZone defaultTimeZone];
baseNotification.repeatInterval = NSMinuteCalendarUnit;
baseNotification.alertBody = @"My Message.";
baseNotification.alertAction = @"My Alert Action";
baseNotification.soundName = UILocalNotificationDefaultSoundName;

UILocalNotification *alertOne = [baseNotification copy];
alertOne.applicationIconBadgeNumber++;
alertOne.fireDate = [[NSDate date] dateByAddingTimeInterval:30];
[[UIApplication sharedApplication] scheduleLocalNotification:alertOne];

UILocalNotification *alertTwo = [baseNotification copy];
alertTwo.applicationIconBadgeNumber++;
alertTwo.fireDate = [[NSDate date] dateByAddingTimeInterval:60];
[[UIApplication sharedApplication] scheduleLocalNotification:alertTwo];
4

5 に答える 5

2

これを試してみてください。

UILocalNotification *baseNotification = [[UILocalNotification alloc] init];
baseNotification.timeZone = [NSTimeZone defaultTimeZone];
baseNotification.repeatInterval = NSMinuteCalendarUnit;
baseNotification.alertBody = @"My Message.";
baseNotification.alertAction = @"My Alert Action";
baseNotification.soundName = UILocalNotificationDefaultSoundName;

UILocalNotification *alertOne = [baseNotification copy];
alertOne.fireDate = [[NSDate date] dateByAddingTimeInterval:30];
alertOne.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1;

UILocalNotification *alertTwo = [baseNotification copy];
alertTwo.fireDate = [[NSDate date] dateByAddingTimeInterval:60];
alertTwo.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1;
于 2013-10-23T06:42:54.933 に答える
0

2点目ですが、元の通知ではなくコピーのバッジ番号を増やしています。また、元のバッジ番号はゼロであるため、バッジ番号がゼロのコピーも常に取得され、それを増やすと常に 1 になります。

解決策は、コピーを作成する直前に元の通知のバッジを増やすことです。

...
baseNotification.applicationIconBadgeNumber++;
UILocalNotification *alertOne = [baseNotification copy];
alertOne.fireDate = [[NSDate date] dateByAddingTimeInterval:30];
[[UIApplication sharedApplication] scheduleLocalNotification:alertOne];

baseNotification.applicationIconBadgeNumber++;
UILocalNotification *alertTwo = [baseNotification copy];
alertTwo.fireDate = [[NSDate date] dateByAddingTimeInterval:60];
[[UIApplication sharedApplication] scheduleLocalNotification:alertTwo];
于 2013-10-13T20:10:15.003 に答える
0

30 秒ごとに大量の通知が届くのは、以前の通知をキャンセルしていないためだと思います。この行をコードの先頭に追加します。

[[UIApplication sharedApplication] cancelAllLocalNotifications];
于 2013-10-26T10:22:51.140 に答える