在我的 PhoneGap 1.3 离线应用程序中,我正在使用在官方插件 GitHub 页面中找到的修改后的 iOS 本地通知插件。
我需要根据用户定义的设置安排重复通知(每周/每月),或每 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 上运行此程序时,UI 会冻结大约 3 - 5 秒,这是一个很大的禁忌。有没有办法优化调度通知?
我知道只使用每周和每月重复通知可以解决问题,但客户想要every 2 weeks
、every 2 months
和every 3 months
通知,所以我需要安排多个通知。
我试图在新线程中运行循环,[NSThread detachNewThreadSelector:...]
这会引发新问题(不时崩溃)。
3G 之后发布的 iPhone 是否会快得多以至于延迟/冻结不存在?我只有这两个古老的设备可以测试。