При приеме UILocalNotification
- Метод
application:DidReceiveLocalNotification
вызывается, когда приложение находится в Foreground. - Когда приложение находится в фоновом режиме, оно открывает приложение, а затем вызывает
application:DidReceiveLocalNotification
.
Как определить, какой из этих сценариев имеет место? Я хотел бы относиться к ним по-другому.
Если приложение было в фоновом режиме, пользователь указал, что хочет посмотреть событие. Поэтому в application:DidReceiveLocalNotification
я не хочу снова спрашивать их, я просто хочу принять их на мероприятие.
Но если приложение находится в Foreground, когда уведомление срабатывает и вызывает application:DidReceiveLocalNotification
, я хочу спросить пользователя, хотят ли они просмотреть событие.
В сущности я бы:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
if (appLauncedFromBackground)
// go to event
else
// ask if user wants to view event
}
Я подумывал написать значение bool для NSUserDefault внутри applicationWillEnterForeground:application
, а затем прочитать и перезагрузить его внутри application:DidReceiveLocalNotification
. Но я думал, что если бы был способ проверить, это был бы намного лучший маршрут.
Спасибо, Марк
EDIT ******************************
Спасибо xuzhe, но это не сработает в этой ситуации. Вот несколько подробностей, которые могут объяснить, почему это не работает и может помочь кому-то в ответе на это для меня:
UILocalNotification
, который я устанавливаю здесь, - это событие, подобное событию календаря, которое планируется запустить в выбранное пользователем время, поэтому при планировании уведомления я не буду знать, что пользователь будет делать, когда уведомление пожары. Я использую userInfo уведомления для хранения данных о запланированном событии, но устанавливая значение, подобное inBackground, как предполагалось, не работает.
Я знаю, что это будет одна из двух ситуаций, если пользователь решит, что хочет "просмотреть" событие. (это все предположит, что приложение находится либо в фоновом режиме, либо переднем плане и НЕ уходит).
1 - если он срабатывает, когда приложение не используется && & приложение находится в фоновом режиме и не перестает работать, iOS уведомит пользователя о том, что произошло событие, и предоставит возможность перейти к ответственному приложению (которое в этом случае принадлежит мне). В этот момент, предполагая, что пользователь говорит "да, возьмите меня в это классное приложение", он откроет приложение из фона и вызовет приложение: DidReceiveLocalNotification, где я могу получить все уведомления userInfo.
2 - Пользователь случайно попадает в мое приложение, когда происходит запланированное событие. В этот момент снова применяется приложение: метод DidReceiveLocalNotification, где я могу получить все уведомления userInfo.
Но именно в этот момент я хочу знать, какой из двух сценариев произошел только 1 или 2.
Надеюсь, что эта дополнительная информация о моем использовании UILocalNotification
поможет ответить на этот вопрос. Спасибо заранее - отметьте
END EDIT ****************************