0

ユーザーが2種類の通知から選択できるようにしたい。そのうちの 1 つは 10 の異なるローカル通知であり、それぞれが 1 時間間隔で日中に発生し、非常にうまく機能します。2 番目のオプションは、一度にすべての通知を起動することです (10 回すべての通知を 3 秒間隔で送信することを意味します)。これが私のメソッドスケジューリング通知です:

-(void)scheduleForToday
{
  for (UILocalNotification *notif in [[UIApplication sharedApplication]scheduledLocalNotifications])
      [[UIApplication sharedApplication]cancelLocalNotification:notif];

 for (NSString *string in self.words){
                  NSDateComponents *currentComponents = [[NSCalendar currentCalendar]components:NSYearCalendarUnit|NSDayCalendarUnit|NSMonthCalendarUnit|NSHourCalendarUnit fromDate:[NSDate date]];

    [currentComponents setHour:hour];
    [currentComponents setMinute:minute];
    currentComponents.second = 0;

                  UILocalNotification *notif = [[UILocalNotification alloc] init];
                  notif.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
                  currentComponents.second = [self.words indexOfObject:string]*3;
                  notif.fireDate = [calendar dateFromComponents:currentComponents];
                  notif.alertBody = [NSString stringWithFormat:@"%@",word];
                  notif.alertAction = NSLocalizedString(@"key", nil);
                  notif.userInfo = userDict;
                  [[UIApplication sharedApplication] scheduleLocalNotification:notif];
}

}

メソッドが実行された後、私は

NSLog(@"Finished Setiing Today Notifications %@",[[UIApplication sharedApplication] scheduledLocalNotifications]);

また、通知の正しいスケジュールを取得していますが、アプリがバックグラウンドにある場合、デバイスでもシミュレーターでも表示されません。何が問題になる可能性がありますか? アドバイスをいただければ幸いです。 通知スケジュール

4

2 に答える 2

1

まず、通知をキャンセルするための最初のループを取り除き、次を使用できます。

[[UIApplication sharedApplication] cancelAllLocalNotifications];

次に、for-in ステートメントを使用する代わりに、通常の for ステートメントを使用するだけで、インデックスを追跡できます。

for (int i = 0; i < self.words.count; i ++) {

}

次に、発火日については、NSDate を使用してみdateByAddingTimeInterval:て、index+1 に通知の間隔を掛けた値を渡す必要があります。以前は、すべての通知を数ミリ秒以内に発火するようにスケジューリングしていました。

notif.fireDate = [[NSDate date] dateByAddingTimeInterval:(i + 1) * 3];
于 2013-08-09T11:13:00.443 に答える
-3

NSLocal 通知の repeatInterval を設定する

 notif.repeatInterval=3*NSSecondCalendarUnit;
于 2013-08-09T11:11:18.430 に答える