Сбой приложения iPhone при локальном уведомлении - PullRequest
0 голосов
/ 16 сентября 2010

Это странно . Мое приложение планирует локальные уведомления всякий раз, когда оно отправляется в фоновом режиме, и, хотя первое уведомление отображается правильно, как только после этого должно быть запущено, все приложение падает. Да, на заднем плане. Пока код не выполняется.

Не выводится консоль, я просто получаю диалоговое окно с надписью «Симуляция приложения завершена» в симуляторе 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];
}

Ответы [ 3 ]

1 голос
/ 02 ноября 2010

на каком устройстве вы тестируете?где вы проверяете устройство iPhone3G?Этот код не будет работать на Iphone3g, даже на iOS4, так как iPhone3G не поддерживает многозадачность.Остальная часть кода выглядит хорошо.

1 голос
/ 18 марта 2011

Да. Это проблема iOS 4.1, я также столкнулся с такой же проблемой «Симулятор сбился», но у меня также возникла другая проблема: если мы запускаем более одного локального уведомления в фоновом режиме, тоон также разбил iPhone iOS: S

Я не могу найти какой-либо обходной путь для выполнения более одного локального уведомления.Команда разработчиков Apple должна тщательно проверить Local-Notification.

1 голос
/ 16 сентября 2010

Кажется, это ошибка iOS 4.1.У меня похожие проблемы с моим приложением, которое раньше работало с 4.0.Также другие люди сообщали о подобных проблемах на форумах разработчиков Apple.Жду ответа от яблока.

Привет,

Бен

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