Я читаю документы Apple на
Обработка локальных и удаленных уведомлений
и мне кажется, что я имею противоречивые утверждения. Может кто-то прояснить эти путаницы? Пусть сейчас говорят о дистанционном уведомлении (по сравнению с местным).
Документы говорят, что если кнопка действия в уведомлении нажата, она вызывает приложение: doneFinishLaunchingWithOptions и передает в полезную нагрузку уведомления. Позже он говорит, что приложение работает на переднем плане, оно отправляет уведомление через приложение: didReceiveRemoteNotification:. Это подразумевает, что когда приложение зашифровывается или не работает, вызывается приложение: didFinishLaunchingWithOptions. В противном случае вызывается application: didReceiveRemoteNotification:
Позже есть примечание iOS, в котором говорится следующее:
"iOS Примечание. В iOS вы можете определить, запускается ли приложение в результате нажатия пользователем кнопки действия или отправки уведомления в уже запущенное приложение путем изучения состояния приложения. В реализации делегатов приложения: didReceiveRemoteNotification: или application: didReceiveLocalNotification: метод, получить значение свойства applicationState и оценить его. Если это значение UIApplicationStateInactive, пользователь нажал кнопку действия, если значение является UIApplicationStateActive, приложение было на самом раннем этапе, когда оно было получено уведомление.
Это означает, что приложение: didReceiveRemoteNotification: вызывается как при первом приложении, так и при нажатии пользователем кнопки действия (или слайды ползунка действий в iOS 5) для запуска/запуска приложения.
Источником моей путаницы может быть первая часть, где документы подразумевают, что полезная нагрузка уведомления отправляется с приложением: метод didFinishLaunchingWithOptions: или с непониманием того, что такое "запущенное" приложение (это фоновая идея считается "запущенной" "?). Документация для приложения: didReceiveRemoteNotification: утверждает, что он вызывается для" запущенных" приложений.
Итак, чтобы подвести итог, могу ли я получить разъяснение:
1) Является ли приложение: didReceiveRemoteNotification: всегда вызывается, когда приложение находится на переднем плане или когда пользователь выбирает "действовать" в уведомлении? Если нет, то как мы понимаем примечание iOS о том, что состояние приложения является активным или неактивным?
2) Является ли фоновое приложение "запущенным", по крайней мере, в смысле приложений, требующих приложения: didReceiveRemoteNotification вызывается для запуска приложений?
3) Для завершения используется фоновая команда UIApplicationStateInactive или Active?