В моем автономном приложении PhoneGap 1.3 я использую модифицированный плагин локальных уведомлений iOS, который можно найти на официальной странице плагина GitHub.
Мне нужно запланировать повторяющееся уведомление (еженедельно/ежемесячно) или несколько одиночных уведомлений, запускаемых каждые 2 недели, в зависимости от пользовательских настроек.
Проблема возникает, когда я пытаюсь запланировать запуск этих 26 уведомлений каждые 2 недели.
В настоящее время я использую это для достижения этого:
for (int i = 1; i < 26; i++)
{
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil) {
return;
}
NSDate *date = [[NSDate date] dateByAddingTimeInterval: i * 60 * 60 * 24 * 7 * 2];
localNotif.fireDate = date;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.alertBody = [NSString stringWithFormat:@"%i: %@", i, msg];
localNotif.hasAction = NO;
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];
}
При запуске этого на iPhone 3G или iPod Touch 2 пользовательский интерфейс зависает примерно на 3-5 секунд, что очень важно. Есть ли способ оптимизировать уведомления о расписании?
Я знаю, что использование только еженедельных и ежемесячных повторяющихся уведомлений решит проблему, но клиент хочет every 2 weeks
, every 2 months
и every 3 months
уведомлений, поэтому мне нужно запланировать несколько уведомлений.
Я попытался запустить цикл в новом потоке, используя [NSThread detachNewThreadSelector:...]
, что вызывает новые проблемы (время от времени происходит сбой).
Являются ли iPhone, выпущенные после 3G, настолько быстрее, что задержки/зависания не будет? У меня есть только эти два древних устройства для тестирования.