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 и не мог найти ничего о том, почему это происходит)
Спасибо
Ответы
Ответ 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];
}
}