По этой теме есть много потоков stackoverflow, но я все еще не нашел хорошего решения.
Если приложение не в фоновом режиме, можно проверить launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]
в application:didFinishLaunchingWithOptions:
вызове , чтобы увидеть , если он открыт с уведомлением.
Если приложение работает в фоновом режиме, во всех сообщениях предлагается использовать application:didReceiveRemoteNotification:
и проверять состояние приложения. Но, как я экспериментировал (а также как следует из названия этого API), этот метод вызывается при получении уведомления, а не при нажатии.
Итак, проблема в том, что если приложение запущено, а затем находится в фоновом режиме, и вы знаете, что уведомление получено application:didReceiveNotification
( application:didFinishLaunchWithOptions:
на данном этапе не запускается), как узнать, возобновил ли пользователь приложение, нажав на уведомление или просто нажав на значок приложения? Потому что, если пользователь нажал на уведомление, ожидается, что откроется страница, упомянутая в этом уведомлении. Иначе не должно быть.
Я мог бы использовать handleActionWithIdentifier
уведомления о настраиваемых действиях, но это срабатывает только при нажатии кнопки настраиваемого действия, а не при нажатии пользователем на основную часть уведомления.
Спасибо.
РЕДАКТИРОВАТЬ:
Прочитав один ответ ниже, я подумал, что таким образом могу прояснить свой вопрос:
Как мы можем различить эти 2 сценария:
(A) 1. приложение переходит в фоновый режим; 2. уведомление получено; 3. пользователь нажимает на уведомление; 4. Приложение выходит на передний план.
(B) 1. приложение переходит в фоновый режим; 2. уведомление получено; 3. пользователь игнорирует уведомление и позже нажимает на значок приложения; 4. Приложение выходит на передний план.
Поскольку application:didReceiveRemoteNotification:
запускается в обоих случаях на шаге 2.
Или должен application:didReceiveRemoteNotification:
срабатывать на шаге 3 только для (A), но я каким-то образом неправильно настроил свое приложение, поэтому я вижу его на шаге 2?