UILocalNotification с часовым поясом не по умолчанию - PullRequest
0 голосов
/ 06 февраля 2011

Я пытался использовать UILocalNotification и установить часовой пояс на другой часовой пояс, отличный от моего по умолчанию.

Цель состоит в том, чтобы сделать что-то вроде: -Пользователь будет планировать оповещение с указанием времени и часового пояса -Показать оповещение, когда эточасовой пояс становится указанным временем.

В более словесном описании, скажем, я живу в Лос-Анджелесе, а моя подруга - в Чикаго.Я хочу настроить оповещение, когда в Чикаго 7:00, по будням.

Для одного оповещения я могу обойтись без часового пояса, чтобы сделать абсолютное время.Но я хочу разрешить пользователям устанавливать флаги повтора, и в этом случае я не могу этого сделать - я попытался установить для свойства часового пояса localnotification значение chicago, как в примере выше, однако локальное уведомление не будет запускаться.

Я зарегистрировалсяuinocalnotification во время процесса сериализации, и вот один из выводов:

"<UIConcreteLocalNotification: 0xfb25a50>{fire date = 2011-02-06 06:02:00 -0800, time zone = America/Chicago (CST) offset -21600, repeat interval = 16, next fire date = 2011-02-06 08:02:00 -0800}"

Я установил firedate на 9:02 am chicago абсолютное время и часовой пояс на cst - и в журнале упоминается, что дата пожара действительно 06:02мое местное времяОднако ничего не происходит.Кроме того, следующая пожарная дата является странной, поскольку она должна быть +1 день, а не +2 часа.

Вот как я это настроил: Class classUILocalNotification = NSClassFromString (@ "UILocalNotification");

if (classUILocalNotification != nil) {
    id note = [[classUILocalNotification alloc] init];

    NSString *body = @"body message";       
    switch (repeatflag) {
        case 1: [note setRepeatInterval:NSDayCalendarUnit]; break;
        case 2: [note setRepeatInterval:NSWeekdayCalendarUnit]; break;
        case 3: [note setRepeatInterval:NSWeekCalendarUnit]; break;
        case 4: [note setRepeatInterval:NSMonthCalendarUnit]; break;
        case 5: [note setRepeatInterval:NSYearCalendarUnit]; break; 
        default: break;
    }
    [note setFireDate:dt];
    [note setAlertBody:body];
    [note setTimeZone:timezone];                
    [note setHasAction:NO];
}

Это похоже на какое-то неизвестное поведение.У кого-нибудь есть лучший способ добиться того, что я пытаюсь сделать?Спасибо!

1 Ответ

0 голосов
/ 28 апреля 2013

Кажется, есть ошибка с UILocalNotification при использовании нелокального часового пояса. Первое событие запускается для правильной даты и времени и часового пояса. Однако последующие события запускаются для заданной даты и времени в вашем местном часовом поясе, а не в методе setTimeZone. [iOS 6.1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...