Как я могу получать уведомления от GCM, когда приложение остановлено

GCMIntentService (расширяет GCMBaseIntentService) не получает уведомлений, если приложение не работает.

От: http://developer.android.com/about/versions/android-3.1.html

Запуск элементов управления для остановленных приложений Обратите внимание, что система добавляет FLAG_EXCLUDE_STOPPED_PACKAGES ко всем вещательным вещам. Это делается для предотвращения непреднамеренного или ненужного запуска трансляций из фоновых служб из компонентов остановленных приложений. Фоновая служба или приложение могут переопределить это поведение, добавив флаг FLAG_INCLUDE_STOPPED_PACKAGES для трансляции намерений, которые должны быть разрешены для активации остановленных приложений.

Есть ли способ обойти эту настройку? Благодаря

Ответ 1

GCMIntentService (расширяет GCMBaseIntentService) не получает уведомлений, если приложение не работает.

Да, будет. Остальная часть вашего вопроса, однако, имеет мало общего с тем, работает ли приложение, а скорее, было ли оно раньше пользователем. То, что слово "остановлено" означает в приведенном вами параграфе, не "не работает", а представляет собой состояние, в котором находится приложение:

  • когда он впервые установлен, прежде чем что-то вручную вызовет компонент (например, пользователь запускает действие)

  • после того, как пользователь принудительно остановит приложение, пока что-то вручную не вызовет компонент (например, пользователь запускает действие)

(и я действительно очень хочу, чтобы они придумали более своеобразное прилагательное, чем "остановлено" для этого...)

Есть ли способ обойти эту настройку?

Нет. Если пользователь принудительно останавливает ваше приложение, они указывают, что они не хотят, чтобы ваше приложение запускалось снова, по какой-либо причине, пока они не запустили его вручную. Ваша цель - дать пользователю никаких оснований для принудительного остановки вашего приложения. Обратите внимание, что я имею в виду "force-stop" (т.е. Нажмите кнопку "Force Stop" из "Настройки" ) - обычные диспетчера задач или прокрутка из списка "Новые задачи" в Android 4.x не имеют этого эффекта.

Ответ 2

По словам Франческо Нерьери в этот поток android-gcm:

Итак, если вы принудительно остановите приложение, предполагаемое поведение для ICS будет для приложение, чтобы не получать сообщение. В JB это означает, что GCM также отмените регистрацию приложения, это неудачное поведение, и мы работая, чтобы изменить это (незарегистрированная часть в JB).