UILocalNotification присутствует NotificationNow выпуск
Эта проблема сводила меня с ума. То, что я пытаюсь сделать, это вызвать уведомление, когда пользователь входит в регион. Тем не менее, я хочу, чтобы пользователь, использующий приложение, показывал предупреждающее сообщение, а приложение в фоновом режиме показывало локальное уведомление.
Вот мой код:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
UIApplication *app = [UIApplication sharedApplication];
if (app.applicationState == UIApplicationStateActive)
{
NSURL *musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Alarm" ofType:@"caf"]];
AVAudioPlayer *audioFile = [[AVAudioPlayer alloc] init];
audioFile = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:NULL];
[audioFile play];
UIAlertView *arrivingDestinationAlert = [[UIAlertView alloc] initWithTitle: @"Arriving" message:[NSString stringWithFormat:@"Alert"] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[arrivingDestinationAlert show];
}else if(app.applicationState == UIApplicationStateBackground || app.applicationState == UIApplicationStateInactive)
{
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = [NSString stringWithFormat:@"%d to reach your destination", self.distToRemind];
notification.alertAction = @"Destination Approaching";
notification.hasAction = YES;
notification.soundName = UILocalNotificationDefaultSoundName;
[app presentLocalNotificationNow:notification];
}
[manager stopMonitoringForRegion:region];
}
То, что я делал раньше, работало. Это было локальное уведомление, не спрашивая, было ли приложение фоновым или активным. Я просто обедал уведомление, как только didEnterRegion
был триггер Однако теперь я могу заставить его работать.
Я что-то пропустил?
1 ответ
Я думаю, что вы проверяете активное состояние в неправильном месте. Я делаю что-то очень похожее, но проверяю активное состояние в AppDelegate при срабатывании уведомления. Вы должны перехватить местное уведомление в -didReceiveLocalNotification
, Если состояние активно, вставьте туда свой UIAlertView. Если вы запускаете предупреждение из -didEnterRegion или -didExitRegion из фона, оно никогда не будет отображаться.