Push Benachrichtigungen mit ngCordova

Als Fußballfan möchte man über geschossene Tore seiner Mannschaft in einem gerade laufenden Spiel gerne informiert werden. Leider musste ich feststellen, dass einige Android Apps im Play Store zwar hoch gelobt werden, letztlich aber irgendwie am Push der Tore scheitern. Die einen funktionierten anfangs noch ganz gut, gaben dafür im Laufe der Updates den Geist auf. Und die anderen funktionierten von vornherein gar nicht. Nachdem ich mich also zunächst mit den Apps an sich herum geschlagen habe, Cache löschen, Neuinstallation etc nicht half, wollte ich selbst eine solche App schreiben. Da mich im Grunde nur meine Lieblingsmannschaft und die dazugehörige Liga interessiert, habe ich den Umfang der App zunächst auch genau darauf begrenzt.

Google Cloud Messaging (GCM)

Push Benachrichtigungen unter Android werden über Google Cloud Messaging abgehandelt. Dafür schreibt man quasi einmal seinen eigenen Server, der Daten holt, vergleicht oder was auch immer. Und sobald man der Meinung ist, man müsse eine Veränderungen in den Daten oder andere Neuigkeiten teilen, schickt man die Push Nachricht an GCM. Dafür ist es zwingend erforderlich in der Google API Console ein Projekt anzulegen und sich einen Serverschlüssel generieren zu lassen, die Projekt ID heraus zu suchen und beides zu notieren.

Registration ID

Soweit, so gut. Der eigens geschriebene Server benötigt zusätzlich zur Projekt ID, die als Sender ID fungiert, auch noch die Registration ID des jeweiligen Geräts. Damit wird sichergestellt, dass eine Benachrichtigung Empfänger haben kann, jedoch mindestens einen. Wie bekommt man seine eigene Registration ID heraus?
Folgt man der Doku von ngCordova, findet sich unter Push Notifications eine Android Beispielimplementierung, sowie die Beschreibung zu den einzelnen aufrufbaren Funktionen. Laut Google Suchergebnissen war ich nicht die einzige, die an dieser Stelle auf dem Schlauch stand. Nimmt man die Beispielimplementierung, pastet sie in seinen Controller und startet die App, authentifiziert sich die App gegenüber GCM. Das hast zur Folge, dass GCM automatisch eine Push Benachrichtigung sendet, die als Notification Event „registered“ enthält. Wie im Code zu sehen, wird nachfolgend die ID per Alert ausgegeben:

if (notification.regid.length > 0 ) {
    alert('registration ID = ' + notification.regid);
}
    break;

Da die Registration ID ungefähr 3 Zeilen lang ist und aus einem Zahlen-Buchstaben-Salat besteht ist man gut beraten, den Alert durch ein console.log() o.ä. zu ersetzen. Anschließend kann über den eigenen Server die erste Push Benachrichtigung verschickt werden.

 

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*