Für Google Cloud Messaging muss die App, die Benachrichtigungen erhalten soll, im Vordergrund oder im Hintergrund ausgeführt werden, um eine Push-Benachrichtigung zu verarbeiten?Google Cloud Messaging mit Android
Antwort
Es muss überhaupt nicht ausgeführt werden, deshalb fügen Sie einen Broadcast-Empfänger (GCMReceiver, der auch dann ausgeführt wird, wenn Ihre App nicht aktiv ist) zum Manifest hinzu. Wenn das System eine Downstream-Nachricht empfängt, löst dieser Receiver eine Komponente aus (häufig ein Dienst, der den eingehenden Stream verarbeitet).
<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>
Keine
Ihre App muss nur für eine Übertragung registrieren. Dies funktioniert normalerweise folgendermaßen:
Es besteht eine Socket-Verbindung zwischen dem Google-Server und dem in Ihrer App ausgeführten GCM-Dienst. Wenn Sie also eine Push-Benachrichtigung an Ihre App senden möchten, bitten Sie den Google Push-Server, die Nachricht an den Client zu senden. Der Server schreibt die Nachricht in den Socket und der Dienst am Client sendet einfach eine Broadcast-Nachricht. Ihr empfangender Broadcast-Empfänger wird aufgerufen und Ihre App wird gestartet.
Vorteil ist, dass nicht jede App eine konstante Socket-Verbindung mit ihrem Server für Echtzeit-Updates halten muss.
Betrachten Sie das Lesen über Wake Locks, wenn Sie vorhaben, GCM zu verwenden und einige schwere Operationen im Hintergrund auszuführen, nachdem Sie Push erhalten haben.