Согласно Apple Docs, чтобы узнать, нажал ли пользователь на ваше push-уведомление, вы должны проверить applicationState
в application:didReceiveRemoteNotification:
Если значение равно UIApplicationStateInactive, пользователь нажал кнопку действия; если значение равно UIApplicationStateActive, приложение было самым передним, когда оно получило уведомление.
Я обнаружил, что это не всегда так. Например:
Дважды нажмите кнопку «Домой», чтобы открыть системный трей и войти в «режим быстрого переключения приложений», ваше приложение перемещается вверх, чтобы показать другие запущенные приложения, и ваше приложение переводится в неактивное состояние (хотя оно все еще остается видимым). Если вы получите push-уведомление в этом режиме, ваш делегат приложения по-прежнему получит application:didReceiveRemoteNotification:
, и в этот момент ваш applicationState будет UIApplicationStateActive
. Согласно документам, вы должны относиться к этому так, как будто пользователь нажал на предупреждение... но в данном случае это не так. Мало того, пользователь даже не увидел push-уведомление (возможно, потому, что в этом режиме обрезается верх вашего приложения).
Кто-нибудь знает, как определить, что вы находитесь в «режиме быстрого переключения приложений», или правильно обработать уведомление?