При получении UILocalNotification
- Метод
application:DidReceiveLocalNotification
вызывается, когда приложение находится на переднем плане.
- Когда приложение находится в фоновом режиме, оно открывает приложение и затем вызывает
application:DidReceiveLocalNotification
.
Как я могу определить, какой из этих сценариев происходит? Я хотел бы относиться к ним по-другому.
Если приложение было в фоновом режиме, то пользователь указал, что хочет посмотреть на событие. Так что в application:DidReceiveLocalNotification
я не хочу спрашивать их снова, я просто хочу взять их на мероприятие.
Но если приложение находится на переднем плане, когда уведомление запускается и вызывает 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
. Но я подумал, что если есть способ проверить, это будет гораздо лучший маршрут.
Спасибо, Марк
РЕДАКТИРОВАТЬ ************* *****************
Спасибо, xuzhe, но это не сработает в этой ситуации. Вот немного больше деталей, которые могут объяснить, почему это не сработает, и, возможно, помочь кому-то ответить на этот вопрос для меня:
UILocalNotification
, который я задаю здесь, - это событие, похожее на событие календаря, которое планируется запустить в выбранное пользователем время, поэтому при планировании уведомления у меня не будет представления о том, что будет делать пользователь, когда уведомление пожары. Я использую userInfo уведомления для хранения данных о запланированном событии, но установка значения, такого как inBackground, как предложено, не будет работать.
Я знаю, что это будет одна из двух ситуаций, если пользователь решит, что он хочет "просмотреть" событие. (все это будет предполагать, что приложение находится либо в фоновом режиме, либо на переднем плане и НЕ закрывается).
1 - Если оно срабатывает, когда приложение не используется && приложение находится в фоновом режиме и не закрывается, iOS уведомит пользователя о том, что произошло событие, и предоставит возможность перейти к ответственному приложению (которое принадлежит мне). в этом случае). В этот момент, если пользователь скажет «да, возьмите меня в это классное приложение», он откроет приложение из фона и вызовет приложение: DidReceiveLocalNotification, где я смогу получить все уведомления userInfo.
2 - пользователь случайно оказался в моем приложении, когда происходит запланированное событие. В этот момент приложение: метод DidReceiveLocalNotification вызывается снова, где я могу получить все уведомления userInfo.
Но именно в этот момент я хочу знать, какой из двух сценариев только что произошел 1 или 2.
Надеюсь, эта дополнительная информация о моем использовании UILocalNotification
поможет ответить на этот вопрос. Заранее спасибо - оценка
КОНЕЦ РЕДАКТИРОВАНИЯ ****************************