обработка push-уведомлений

Я читаю документы Apple на

Обработка локальных и удаленных уведомлений

и мне кажется, что есть противоречивые утверждения. Может кто-то прояснить эти моменты путаницы? Давайте пока поговорим строго об удаленном уведомлении (по сравнению с локальным).

В документах говорится, что если нажата кнопка действия в уведомлении, она вызывает application: didFinishLaunchingWithOptions и передает полезную нагрузку уведомления. Позже он говорит, что если приложение работает на переднем плане, он доставляет уведомление через приложение: didReceiveRemoteNotification :. Это подразумевает, что когда приложение фоновое или не работает, вызывается application: didFinishLaunchingWithOptions. В противном случае приложение: didReceiveRemoteNotification: вызывается.

Позже, есть примечание iOS, говорящее следующее:

& quot; iOS Примечание. В iOS вы можете определить, было ли запущено приложение в результате нажатия пользователем кнопки действия или сообщение было доставлено в уже запущенное приложение, изучив состояние приложения. В реализации делегата приложения: didReceiveRemoteNotification: или application: didReceiveLocalNotification: метод, получите значение свойства applicationState и оцените его. Если значение UIApplicationStateInactive, пользователь нажал кнопку действия; если значение равно UIApplicationStateActive, приложение получило приоритет, когда получило уведомление. & quot;

Это подразумевает для меня, что приложение: didReceiveRemoteNotification: вызывается как тогда, когда приложение уже установлено, и если пользователь нажимает кнопку действия (или перемещает ползунок действия в iOS 5), чтобы запустить / запустить приложение.

Источником моей путаницы может быть первая часть, где документы подразумевают, что полезная нагрузка уведомления отправляется вместе с приложением: didFinishLaunchingWithOptions: method или с неправильным пониманием того, что & quot; выполняется & quot; приложение (является фоновым приложением, которое считается «работающим»). Документация для приложения: didReceiveRemoteNotification: заявляет, что он вызывается для "запуска" Приложения.

Итак, подведу итог, могу ли я получить разъяснения по поводу:

1) Является ли приложение: didReceiveRemoteNotification: всегда вызывается, когда приложение заранее установлено или когда пользователь выбирает «действовать» в уведомлении? Если нет, то как мы понимаем примечание iOS по определению состояния приложения как активного или неактивного?

2) Является ли фоновое приложение «работающим», по крайней мере, в смысле приложения, запрашивающего документы: didReceiveRemoteNotification вызывается для запуска приложений?

3) Для завершения, является ли фоновое приложение UIApplicationStateInactive или Active?

Ответы на вопрос(2)

Ваш ответ на вопрос