обработка 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?