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