Intereting Posts
Различия и преимущества SurfaceView против GLSurfaceView на Android? Android Navigation Drawer (вызывающие действия) с AbstractMainActivity Как вы сериализуете Android Intents? Как вернуться на рынок, когда настраиваемая схема URL-адресов Android не обрабатывается? EditText, adjustPan, ScrollView проблема в android Как предотвратить множественные экземпляры активности при ее запуске с разными намерениями XmlPullParser получает дочерние узлы Многопоточный доступ и кеш переменной потоков Почему Eclipse не видит мой телефон Samsung Galaxy, хотя я могу передавать файлы с помощью буквы диска? Как установить номер версии приложения в Android Studio Почему Google выбрал Java для операционной системы Android? Каковы значения по умолчанию для темы Holo на Android 4.0? Являются ли приложения IOS и Android с Webview только рассмотренными гибридами или веб-приложениями? Java.util.zip.ZipException: повторная запись: как преодолеть Как исключить транзитивные зависимости другого подпроекта в сборках мультипроектов?

Android GCM (push-уведомление): устройство не получает уведомления, если приложение остановлено

Я использую push-уведомление (GCM) в своем проекте Android.

Согласно учебнику GCM, я внедрил широковещательный приемник и зарегистрировал его в AndroidManifest.xml .

Такие широковещательные приемники должны получать сообщения, даже если мое приложение закрыто (не только, если мое приложение находится в фоновом режиме, но даже если оно было остановлено).

Но это не работает, как я ожидаю. onReceive() не вызывается, если приложение закрыто. Похоже, что мое понимание вещательных приемников является правильным, и проблема в моих ожиданиях относительно GCM.

Одна из возможных причин заключается в том, что сервер google даже не отправляет уведомление на устройство, если приложение закрыто. Итак, правильно ли мое приложение может получать сообщение (и onReceive() будет вызываться в широковещательном приемнике), только если он работает или находится в фоновом режиме (но не закрыт)?

Заранее спасибо.

Solutions Collecting From Web of "Android GCM (push-уведомление): устройство не получает уведомления, если приложение остановлено"

Такие широковещательные приемники должны получать сообщения, даже если мое приложение закрыто (не только, если мое приложение находится в фоновом режиме, но даже если оно было остановлено).

Если пользователь принудительно останавливает ваше приложение из «Настройки», ваш код никогда не будет запускаться снова , пока что-то вручную не запустит один из ваших компонентов, как правило, пользователь вручную запускает действие (с Android 3.1). Следовательно, если пользователь принудительно останавливает ваше приложение из настроек, вы не будете получать сообщения GCM на новых устройствах / эмуляторах.

Итак, правильно ли мое приложение может получать сообщение (и метод onReceive () будет вызываться в широковещательном приемнике), только если он работает или находится в фоновом режиме (но не закрыт)?

В Android с точки зрения приложения нет понятия «закрыто». Если «закрыто» означает «не имеет ходового процесса, где последний процесс был завершен нормально», то да, вы должны получать сообщения GCM и другие трансляции. Но, опять же, принудительная остановка не «прекращается нормально».

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

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

В документации говорится, что:

Приложение Android на устройстве Android не нужно запускать для приема сообщений. Система пробудит приложение Android через Intent broadcast, когда сообщение поступит, пока приложение настроено с правильным приемником и разрешениями вещания.

Проверьте реализацию и разрешения вашего широковещательного приемника.