Подтвердить что ты не робот

UILocalNotification не работает вообще

У меня есть некоторые действительно раздражающие проблемы с UILocalNotification.

Закрыв приложение, которое я почти завершил, я заметил, что я не могу заставить локальные уведомления работать, независимо от того, что я пробовал.

Поэтому вместо того, чтобы тратить время, я решил вернуться к основам и посмотреть, смогу ли я заставить их работать вообще.

Я создал новое приложение на основе XCode и заменил -viewDidLoad на это:

- (void)viewDidLoad
{
    UILocalNotification * theNotification = [[UILocalNotification alloc] init];
    theNotification.alertBody = @"Alert text";
    theNotification.alertAction = @"Ok";
    theNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];

    [[UIApplication sharedApplication] scheduleLocalNotification:theNotification];
}

Однако это тоже ничего не делает.
Я ожидал увидеть уведомление через 10 секунд после запуска приложения, но ничего не появляется.
Кроме того, я тестировал это как на своем iPhone, так и на симуляторе.

Я пропустил что-то действительно важное здесь? (Я искал документацию Apple и не мог найти ничего о том, почему это происходит)

Спасибо

4b9b3361

Ответ 1

UILocalNotification отображаются только автоматически, если приложение не работает (или работает в фоновом режиме). Если приложение запущено и локальное уведомление срабатывает, метод UIApplicationDelegate s - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification вызывается, и система ничего не отображает (и не воспроизводит звук). Если вы хотите отобразить уведомление, создайте UIAlertView самостоятельно в методе делегата.

Ответ 2

Просто комментарий из моих личных приключений в глупости...

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

Ответ 3

  • FireDate должен быть в будущем. Приложение
  • должно выполняться в фоновом режиме или закрыто.
  • еще одна вещь, не забудьте показать запрос, разрешить ли push, добавить код ниже в AppDelegate:

    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
      if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
           UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; 
           [application registerUserNotificationSettings:settings]; 
      }
    }