Wenn man von seiner Webseite eine Push-Nachricht über Aerogear senden möchte und PHP verwendet, muss man einen kleinen Umweg gehen. Es gibt verschiedene Möglichkeiten, das zu erreichen. Die folgende Vorgehensweise ist eine davon.
Andere Blogs zum Thema Aerogear:
- Aerogear Unified Push Server und Xamarin – Push-Nachrichten aus Xamarin über Aerogear an iOS, Android und WindowsPhone versenden
- Aerogear Unified Push Server auf Debian und Wildfly installieren
curl
Wir verwenden curl, um eine Anfrage an den Aerogear-Server zu senden.
Dieser Befehl in der Kommandozeile veranlasst Aerogear eine Push Nachricht zu senden:
curl -u "APPLICATION ID" -v -k -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"message": {"alert": "Hello from the curl HTTP Sender!","sound": "default"}}' SERVER_URL/rest/sender
APPLICATION ID und SERVER_URL muss durch die Daten, die Aerogear unter „Sender API“ zur Verfügung stellt ersetzt werden.
Welche Einstellungen hier besonders bei den Daten (message) gemacht werden können, kann in der Aerogear Dokumentation nachgelesen werden.
Aerogear erlaubt nur sichere SSL Verbindungen. Wenn man kein bestätigtes Zertifikat gekauft hat, muss die Verbindung so konfiguriert werden, dass es erlaubt ist, selbst signierte Zertifikate zu verwenden.
Wichtig ist hier der Parameter –k. Dieser wird benötigt, um selbst signierte SLL Zertifikate zu erlauben. Es ist natürlich immer besser ein Zertifikat zu kaufen. Ist ein Zertifikat vorhanden, kann man diesen Parameter einfach weglassen.
Wenn man in der Kommandozeile obigen Befehl ausführt und bei Aerogear bereits ein Gerät registriert ist, wird nun schon eine Push-Nachricht beim Gerät ankommen.
Bash-Skript
Um später über PHP Push-Nachrichten absetzen zu können, kann ein Bash-Skript geschrieben werden, das dann den curl Befehl ausführt. Dem Skript sollen natürlich Variablen übergeben werden. Im einfachsten Fall nur die Nachricht, die im curl Befehl alert heißt.
Das Skript wird in das Verzeichnis im Webspace gelegt, in dem später auch das PHP Skript liegt. Natürlich kann es auch in einem anderen Verzeichnis liegen, dann muss der Pfad angepasst werden. Außerdem muss das Skript ausführbar sein.
Der Inhalt des Skripts sieht wie folgt aus (sendPush):
#!/bin/bash curl -u "APPLICATION ID" -v -k -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"message": {"alert": "'"$1"'","sound": "default"}}' SERVER_URL/rest/sender
Hier müssen wieder APPLICATION ID und SERVER_URL ersetzt werden. Außerdem ist nun der Wert für alert durch eine Variable ersetzt, die wir dem Skript übergeben.
Dem Skript muss noch die Berechtigungen 775 gegeben werden:
chmod 755 /pfad/zum/skript/sendPush
Wenn das Skript angelegt ist, kann es ausgeführt werden und es sollte eine Push-Nachricht ankommen:
/pfad/zum/skript/sendPush
Aufruf über PHP
Jetzt kann das Skript von PHP aus aufgerufen werden. Falls das Skript im selben Ordner liegt wie das PHP Skript, sieht das PHP Skript so aus:
<?php function sendPush($message){ shell_exec('./pushSend "'.$message.'"'); } sendPush("TEST");
Der Funktion sendPush wird ein Parameter message übergeben. Über shell_exec wird dann unser shell Skript ausgeführt und message übergeben. Zum Testen wird hier im PHP-Skript direkt die sendPush aufgerufen. Das wird natürlich später auskommentiert.
Wenn wir das PHP Skript nun über einen Webbrowser aufrufen, sollte kurze Zeit später eine Nachricht „TEST“ am Gerät ankommen.