这是怪异的。我的应用程序会在将其发送到后台时安排本地通知,并且在第一个通知正确显示时,只要在此之后应该触发,整个应用程序就会崩溃。是的,在后台。虽然没有执行任何代码。
没有给出控制台输出,我只是在iPhone模拟器中得到一个“模拟应用程序退出”的对话框。在实际的iPhone上,我会被扔回跳板。
以下是通知的相关代码。谢谢你的帮助。
- (void)scheduleLocalNotificationsForAlarmsWithNextAlarmAt:(NSDate *)theFireDate ofType:(int)workPlayType {
BOOL backgroundSupported = NO;
UIDevice* device = [UIDevice currentDevice];
if ([device respondsToSelector:@selector(isMultitaskingSupported)])
backgroundSupported = device.multitaskingSupported;
if(!backgroundSupported) return;
int work_minutes = [[NSUserDefaults standardUserDefaults] integerForKey:@"work_minutes_preference"];
int play_minutes = [[NSUserDefaults standardUserDefaults] integerForKey:@"play_minutes_preference"];
int workPlayStatusForNotif = workPlayType;
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
if (workPlayStatusForNotif == 1) {
localNotif.alertBody = @"Work";
localNotif.repeatInterval = work_minutes;
} else {
localNotif.alertBody = @"Play";
localNotif.repeatInterval = play_minutes;
}
localNotif.fireDate = theFireDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.alertAction = NSLocalizedString(@"View Details", nil);
localNotif.soundName = @"ding.caf";
localNotif.applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];
// now the other one
localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
if (workPlayStatusForNotif == 0) {
localNotif.alertBody = @"Work";
localNotif.fireDate = [theFireDate dateByAddingTimeInterval:(float)work_minutes*60];
localNotif.repeatInterval = work_minutes;
} else {
localNotif.alertBody = @"Play";
localNotif.fireDate = [theFireDate dateByAddingTimeInterval:(float)play_minutes*60];
localNotif.repeatInterval = play_minutes;
}
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.alertAction = NSLocalizedString(@"View Details", nil);
localNotif.soundName = @"ding.caf";
localNotif.applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];
}
答案 0 :(得分:1)
这似乎是一个iOS 4.1错误。我的应用程序曾经与4.0一起使用时遇到了类似的问题。还有其他人在苹果开发者论坛上报告了类似的问题。等待苹果的回应。
问候,
本
答案 1 :(得分:1)
您正在测试哪台设备?你在哪里检查设备是否是iPhone3G?这个代码不会在Iphone3g上运行,即使它在iOS4上,因为iPhone3G不支持多任务处理。 其余的代码看起来还不错。
答案 2 :(得分:1)
是这是一个iOS 4.1问题,我也遇到了同样的问题“模拟器崩溃”,但我也遇到了另一个问题: 如果我们在后台发起多个Local-Notification,那么它也会崩溃iPhone iOS:S
我无法找到执行多个本地通知的任何解决方法。 Apple Development团队必须深入验证Local-Notification。