Определение, запущено ли UILocalNotification с приложением на переднем плане или в фоновом режиме

При получении UILocalNotification

  1. Метод application: DidReceiveLocalNotification вызывается, когда приложение находится на переднем плане.
  2. Когда приложение находится в фоновом режиме, оно открывает приложение, а затем вызывает 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 поможет в ответе на этот вопрос. Заранее благодарим - отметьте

КОНЕЦ РЕДАКТИРОВАНИЯ * ** * ** * ** * ** * ** * ** * ** * ** * ***

30
задан Mark Andrews 25 August 2011 в 06:21
поделиться