在我的PhoneGap 1.3离线应用程序中,我正在使用官方插件GitHub页面中的修改后的iOS本地通知插件。
我需要根据用户定义的设置安排重复通知(每周/每月)或每两周发出多个单一通知。
当我尝试安排每两周发布一次26个通知时,会出现问题。
目前我正在使用它来实现这一目标:
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
通知,因此我需要安排多个通知。< / p>
我试图使用[NSThread detachNewThreadSelector:...]
在新线程中运行循环,这会引发新问题(偶尔会崩溃)。
在3G之后发布iPhone的速度要快得多,延迟/冻结将不存在吗?我只有那两个古老的设备来测试。
答案 0 :(得分:1)
我建议使用以下代码在后台线程中执行创建:(void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg
或者我会尝试重新考虑这个过程。也许不是一次创建一个价值2周的提醒,而是创建一对夫妇并设置其他东西以创建其余部分。或者甚至可以创建一个并存储重复的bool,因此当它触发时它也会创建下一个。