Я работаю над функцией, которая позволит пользователям планировать дни и время получения уведомления.Планирование локальных уведомлений
Пока что функция времени и сообщений отлично работает. Где я застрял, это интервал повторения.
Вот что я пробовал:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *formatedDate = [dateFormatter stringFromDate:self.datePicker.date];
self.currentTimeLabel.text = formatedDate;
NSDate *date = [dateFormatter dateFromString:self.currentTimeLabel.text];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];
[components setHour:hour];
[components setMinute:minute];
if ([self.currentRepeatLabel.text containsString:@"Sun"]) {
[components setWeekday:0];
self.notification = [[UILocalNotification alloc] init];
self.notification.fireDate = [calendar dateFromComponents:components];
self.notification.repeatInterval = NSCalendarUnitDay;
[self.notification setAlertBody:[NSString stringWithFormat:@"A friendly reminder: %@", self.titleStringToDisplay]];
if (self.soundSwitch.isOn == YES) {
self.notification.soundName = @"soundeffect.wav";
}
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:self.titleStringToDisplay forKey:@"title"];
self.notification.userInfo = infoDict;
[[UIApplication sharedApplication] scheduleLocalNotification:self.notification];
}
if ([self.currentRepeatLabel.text containsString:@"Mon"]) {
[components setWeekday:1];
self.notification = [[UILocalNotification alloc] init];
self.notification.fireDate = [calendar dateFromComponents:components];
self.notification.repeatInterval = NSCalendarUnitDay;
[self.notification setAlertBody:[NSString stringWithFormat:@"A friendly reminder: %@", self.titleStringToDisplay]];
if (self.soundSwitch.isOn == YES) {
self.notification.soundName = @"soundeffect.wav";
}
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:self.titleStringToDisplay forKey:@"title"];
self.notification.userInfo = infoDict;
[[UIApplication sharedApplication] scheduleLocalNotification:self.notification];
}
// I'm doing this for each day.
NSCalendarUnitDay
повторяет мое ежедневное уведомление, не имеет значения, какие дни я выбрал. Я пробовал NSCalendarUnitWeekOfYear
, но мои уведомления никогда не срабатывали при использовании этого.
Цель состоит в том, чтобы пользователь задавал свое название, время и повторяющиеся дни (как и собственное приложение для аварийных сигналов).
Как установить интервал повторения для этого?
Обновление и новый выпуск:
Я использую NSCalendarUnitWeekOfYear
прямо сейчас.
Вот моя проблема ... уведомление больше не срабатывает, а repeatInterval всегда устанавливается на понедельник, а не на день недели, который он выполняет в коде.
В этом случае, что такое будний день? –
будний день - текущий день календаря, как сегодня - пятница, поэтому будний день пятницы - 6 @LukeIrvin – salmancs43
Gotcha. Итак, вот моя проблема с моим кодом выше. Все мои повторы бьются каждый понедельник, хотя, когда я просматриваю свой код, он проходит через дни недели, на которые я его устанавливал. –