Создать интервалы недель в UILocalNotification вместе с циклом - PullRequest
6 голосов
/ 15 ноября 2011

Я делаю приложение, которое использует UILocalNotification.Я хочу знать, как сделать пробелы в UILocalNotification, то есть, как я мог запланировать тревогу на 4 недели (повторять ежедневно или один раз в день) и выключать на 1 неделю, снова включать на 4 недели и выключать на 1 неделю и так далее.Это всего лишь один случай.Эти пробелы являются динамическими и решаются во время выполнения.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Она хочет сказать, что эти действия являются динамическими .... поэтому, если она установит 28 уведомлений для первых 4 недель и 28 уведомлений для второго периода и так далее ... тогда это будет пересекать 64 локальных уведомления на приложение ... ..... также эти пробелы являются динамическими, то есть это может быть что угодно, например, 12 недель в / 1 неделю перерыва ..... затем, по вашему методу, она должна установить 84 уведомления для одного лекарства (предел пересечения), и их, безусловно более одного лекарства такого рода ...

0 голосов
/ 23 ноября 2011

Вы не сможете использовать repeatInterval, так как вам нужна особая схема повторения. Я думаю, что вы должны запланировать локальное уведомление на каждый день, когда вы хотите его получить:

  • 28 уведомлений за каждый день первых 4 недель,
  • 28 уведомлений за каждый день второго периода 4 недели,
  • и так далее ...

Код, который может помочь:

/**
  This method will schedule 28 notifications, each 24 hours exactly for 4 weeks,
  starting from dayOne (first notification will be at dayOne, the second one
  at dayOne + 24 hours..., so be sure to choose the hour you want by setting
  dayOne correctly.
 */
- (void)scheduleLocalNotificationsEachDayFor4WeeksStartingFrom:(NSDate *)dayOne {

  // Schedule notifications for each day during 4 weeks starting at dayOne
  NSMutableArray *notifications = [NSMutableArray array];
  for (int i = 0; i < 28; i++) {
    [notifications addObject:notificationForDay(dayOne, i)];
  }
  for (UILocalNotification *notification in notifications) {
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
  }
}

UILocalNotification *notificationInSomeDays(NSDate *referenceDate, NSUInteger some) {
  UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];

  // Notification timing
  NSUInteger days = 60*60*24; // number of seconds in a day
  notification.fireDate = [referenceDate dateByAddingTimeInterval:some * days];
  notification.timeZone = [NSTimeZone localTimeZone]; // use local time zone if your reference date is a local one, or choose the appropriate time zone

  // define your notification content...

  return notification;
}

Вы можете использовать метод scheduleLocalNotificationsEachDayFor4WeeksStartingFrom:, чтобы запланировать 28 необходимых уведомлений на каждый период в 4 недели. Так что теперь вы можете просто запускать это так часто, как это необходимо, вызывая его с первым днем ​​каждого 4-недельного периода, когда вы хотите, чтобы уведомления запускались.

Когда ваше приложение запущено, вы должны очистить все текущие локальные уведомления и перепланировать их в соответствии с вашими требованиями. В частности, вам придется настроить, если приложение запускается в течение 4 недель, когда должны запускаться уведомления. В этом случае вам придется настроить предложенный метод scheduleLocalNotificationsEachDayFor4WeeksStartingFrom, чтобы уменьшить количество запланированных уведомлений ...

...