UILocalNotification не работает вообще - PullRequest
17 голосов
/ 12 февраля 2011

У меня действительно раздражающие проблемы с 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 и не смог ничего понять, почему это происходит )

Спасибо

Ответы [ 3 ]

43 голосов
/ 12 февраля 2011

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

16 голосов
/ 15 июля 2011

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

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

12 голосов
/ 22 октября 2015
  1. дата огня должна быть в будущем.
  2. приложение должно работать в фоновом режиме или закрыто.
  3. еще одна вещь, не забудьте показать запрос, разрешить ли 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]; 
      }
    }
    
...