DidReceivedLocalNotificaiton не вызывается при комментировании localNotification.alertBody - PullRequest
1 голос
/ 19 декабря 2011

У меня есть следующая строка кода для генерирования локального уведомления через каждую 1 минуту (для тестирования), он отлично работает в следующих условиях.

  1. Когда приложение находится в рабочем состоянии.
  2. Когда приложение находится в фоновом состоянии и localNotification.alertBody = @ "Локальное уведомление получено" не комментируется.

Теперь, когда я комментирую "localNotification.alertBody", он отлично работает, когда приложение находится в рабочем состоянии, но не работает, когда приложение находится в фоновом состоянии.

Ниже приведена строка кода для создания локального уведомления.

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
[localNotification setRepeatInterval:NSMinuteCalendarUnit];
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.repeatCalendar = [NSCalendar currentCalendar];
localNotification.fireDate = fireDateOfNotification;
//localNotification.alertBody = @"Local Notification Received";
localNotification.repeatInterval = NSMinuteCalendarUnit;

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[localNotification release];

in - (void) applicationDidEnterBackground: (UIApplication *) application

    bgTask = [application beginBackgroundTaskWithExpirationHandler: ^{
    dispatch_async(dispatch_get_main_queue(), ^{
        [application endBackgroundTask:self->bgTask];
        self->bgTask = UIBackgroundTaskInvalid;

Ответы [ 2 ]

3 голосов
/ 10 апреля 2012

Кажется, что вы пытаетесь выполнить код в фоновом режиме, не показывая уведомление пользователю.

По определению, UILocalNotification не будет отображать всплывающее окно, если alertBody имеет значение nil, даже если didReceiveLocalNotification будет вызываться при условии, что приложение выполняется.

Если приложение находится в фоновом режиме, а alertBody пуст, всплывающее предупреждение отсутствует и никакого выполнения кода.

2 голосов
/ 19 декабря 2011

Из документации API :

alertBody

...

Назначить строку или, предпочтительно, ключ локализованной строки (используя NSLocalizedString) в качестве значения сообщения. Если значение этого свойства не равно нулю, отображается предупреждение . Значением по умолчанию является ноль ( без предупреждения ).

Вы уверены, что application:didReceiveLocalNotification: вообще не вызывали? Или это просто предупреждение, которое вы пропустили?

...