Ionic.io und Push über PHP mit dem Httpful Framework

Posted on by Julian Stock.

Wenn man mit dem relativ neuen Ionic Framework eine App entwickelt, kommt man (vermutlich) nicht lange ohne eine Identifizierung der Benutzer aus. Ein Grund könnte zum Beispiel sein, dass man benutzerspezifische Push-Nachrichten versenden möchte. Mit Hilfe des hauseigenen Service Ionic.io und ein paar Zeilen JavaScript werden die User der App anonymisiert in einer Datenbank hinterlegt. Vorausgesetzt, die App ist bereits für Pushnachrichten konfiguriert, was aber gut dokumentiert ist.

User Liste API Keys

Wenn man nun alle seine App-Benutzer in der Datenbank gespeichert hat, möchte man (wie z. B. in meinem Fall) über einen Cronjob einen Datenbestand X auslesen und an Benutzer, die vom Ergebnis benachrichtigt werden möchten, eine Pushnachricht senden.

Über die Ionic.io Weboberfläche kann man zwar geplante Pushnachrichten versenden (sogar an mehrere Empfänger gleichzeitig und mit diversen Filtermöglichkeiten), aber keine eventgesteuerten Nachrichten.

Eine Dokumentation, wie ich von meinem eigenen Webserver mit eingerichtetem Cronjob einen Request an die Ionic.io API sende, die anschließend eine Pushnachricht an alle von mir festgelegten Device-Tokens sendet, habe ich auch nach mehrstündigem Suchen nicht gefunden. Wie immer gab es zwar jede Menge Entwickler mit dem gleichen Problem, aber leider keine Ergebnisse.

Es gibt natürlich die Möglichkeit, alle Device-Tokens selbst auszulesen und zu speichern, aber wenn die Macher des Ionic Frameworks diesen Service anbieten - warum ihn dann nicht nutzen?

Lange Rede kurzer Sinn: Ich habe im Endeffekt mit Hilfe des Httpful Frameworks und folgendem Codeschnipsel erfolgreich einen Pushnachrichten-Versand über die Ionic.io API versendet:

<?php
  $url = "https://push.ionic.io/api/v1/push";
  $response = \Httpful\Request::post($url, array(
    "app_id" => "xxxxxxxx", // der app-identifiert
    "tokens" => array("123-123-123", "456-456-456"), // alle tokens
    "production" => true, // kein sandbox test
    "notification" => array(
      "alert" => "Achtung: Neue Daten!", // titel der pushnachricht
      "ios" => array(
        "badge" => 1, // zahl im app-icon
        "sound" => "ping.aiff",
        "payload" => array(
          "some-data" => "true"
        )
      )
    )
  ))
  ->addHeaders(array(
    "X-Ionic-Application-Id" => "xxxxxxxx"
  ))
  ->contentType("application/json")
  ->authenticateWith("mein-api-key", "") // den api-key bekommt ihr auf der ionic.io seite
  ->send();

  print_r($response);
?>

Julian Stock
Webentwickler aus Lübeck · 35 Jahre

Social