Для Google Cloud Messaging приложение, которое должно получать уведомления, должно быть запущено на переднем плане или в фоновом режиме для обработки сообщения с уведомлением о нажатии?Google Cloud Messaging с Android
ответ
Его вообще не нужно запускать, поэтому вы добавляете широковещательный приемник (, который будет работать, даже если ваше приложение не активно) в манифесте. Когда система получает нисходящее сообщение, этот приемник запускает компонент (часто это Служба, которая будет обрабатывать входящий поток).
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="YOUR_PACKAGE_NAME" />
</intent-filter>
</receiver>
Нет
Ваше приложение просто необходимо зарегистрироваться для трансляции. Обычно это работает следующим образом:
Существует соединение сокетов, установленное между сервером Google и службой GCM, запущенной в вашем приложении. Поэтому, когда вы хотите отправить push-уведомление в свое приложение, просто попросите Google push-сервер нажать сообщение клиенту. Сервер записывает сообщение в сокет, и служба в конце клиента просто отправляет широковещательную передачу. Ваш широковещательный приемник при приеме вызывается, а затем запускается ваше приложение.
Преимущество в том, что каждое приложение не должно поддерживать постоянное соединение сокета с сервером для обновлений в реальном времени.
Подумайте о том, как следует активировать блокировку бодрствования, если вы планируете использовать GCM и выполнять тяжелую операцию в фоновом режиме после получения нажатия.