UILocalNotifications repeatInterval с использованием NSWeekdayCalendarUnit - PullRequest
4 голосов
/ 03 марта 2011

ОК, поэтому я видел несколько сообщений, в которых говорится, что вы не можете установить UILocalNotification для повторения более или менее нескольких заданных параметров (каждую минуту / час / день / неделю / месяц и т. Д.).

Однако ни одно из этих сообщений не касалось того, что было бы для свойства repeatInterval для UILocalNotification равным NSWeekdayCalendarUnit.

Я очень новичок во всем этом NSDate и NSCalendar, поэтому я уверенЯ что-то упустил, но я перечитал документацию и, похоже, вы МОЖЕТЕ использовать NSWeekdayCalendarUnit, чтобы заставить NSLocalNotification повторять, скажем, каждый понедельник, вторник и четверг, если для NSWeekdayCalendarUnit установлено значение 2,3,5.

NSWeekdayCalendarUnit Определяет единицу дня недели.Соответствующее значение является int.Равно kCFCalendarUnitWeekday.Единицами дня недели являются числа от 1 до N (где для григорианского календаря N = 7, а 1 - воскресенье).

Разве это не правильно?

Заранее спасибо.

1 Ответ

1 голос
/ 25 марта 2011

Да, вы можете. Я делаю это так. Пользователь может выбрать схему с помощью подборщика. И тогда выбор идет по следующему методу:

- (void)setOneLocalAlarmNotification: (NSDate *)firstFireDate withRepeat: (NSInteger)repeat {

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
    return;
localNotif.fireDate = firstFireDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.repeatCalendar = [NSCalendar currentCalendar];

switch(repeat) {
    case 0: 
        break ;
    case 1: 
        localNotif.repeatInterval = kCFCalendarUnitDay;
        break;
    case 2: 
        localNotif.repeatInterval = kCFCalendarUnitWeekday;
        break;
    default: 
        break;
}

// Notification details
localNotif.alertBody = @"Message?";
// Set the action button
localNotif.alertAction = @"Yes";

localNotif.soundName = @"glas.caf"; //UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;

// Specify custom data for the notification
    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"Alarm" forKey:@"type"];
   localNotif.userInfo = infoDict;

// Schedule the notification
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release]
}
...