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

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

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

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

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

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

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

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

Источником моего замешательства может быть первая часть, где документы подразумевают, что полезная нагрузка уведомления отправляется с помощью метода application:didFinishLaunchingWithOptions:, или непонимание того, что такое «работающее» приложение (является ли фоновое приложение «работающим»). "?). В документации для application:didReceiveRemoteNotification: указано, что он вызывается для «запущенных» приложений.

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

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

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

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

38
задан Joey 12 April 2012 в 21:07
поделиться