Skip to main content
Erfahren Sie hier das notwendige Hintergrundwissen zu Push-Nachrichten.

Voraussetzungen

Wie funktionieren Push-Nachrichten mit bequem.app?

Push-Nachrichten werden über den Google Firebase Service sowohl für Android als auch iOS verschickt. Dort ist Ihre App als “Sender” hinterlegt und hat eigene API Zugangsdaten. Sie steuern diese Nachrichten über Ihr eigenes Backend, indem Sie über diese API Zugangsdaten Nachrichten verschicken. Firebase weiß damit, an welche App die Nachrichten gehen sollen. Push-Nachrichten können auf beliebigen Kanälen verschickt werden. Diese Kanäle nennt man Topics. Vereinfacht gezeigt funktioniert das Ganze so: Image Topics sind auf verschiedenen Ebenen möglich:
  • Pro App: Senden Sie eine Push-Nachricht an alle User, die die App installiert haben (Aktion = subscribeToTopic)
  • Pro User: Senden Sie eine Push-Nachricht nur an einen einzelnen User (Aktion = requestDeviceToken)
  • Pro Entität: Definieren Sie selbst, welche Nutzergruppen eine bestimmte Nachricht erhalten. Beispiel: Wenn sich ein User in Ihrer Web-App bei einem Workshop registriert, ist die Entität “workshop” und Sie können jedem Teilnehmer des Workshops einen Nachricht schicken, indem Sie zum Topic “workshop.ID12345” subscriben (Aktion = subscribeToTopic)
Etwas technischer sieht das Ganze in etwa so aus:
Bequem App Push Architektur Deutsch
Kling wie Magie? Stimmt. Wenn Sie eine App installieren, registriert diese App sich - vereinfacht gesagt - automatisch bei Firebase. Dieses Vorgehen ist Teil des Google und Apple Ökosystems. Es fühlt sich ein wenig nach “Magie” an, aber es reicht tatsächlich vollkommen aus, wenn Sie der App mitgeben “Höre auf die Pushnachrichten für Kanal XYZ und dann eine Nachricht an Kanal XYZ via Firebase schicken.

Push-Benachrichtigungen senden (mit Ihrem Server)

Machen Sie sich ein wenig mit Firebase vertraut. Damit haben Sie alle Fäden selbst in der Hand und können jederzeit selbst bestimmten, welche Nachrichten verschickt werden: https://firebase.google.com/docs/cloud-messaging/send-topic-messages?hl=de
Beim Senden von Push-Benachrichtigungen (z. B. über das Firebase Admin SDK oder die FCM REST API) muss der Payload einen deep_link-Schlüssel im data-Objekt enthalten. Dieser sorgt dafür, dass die App zu einer bestimmten Seite navigiert, wenn der Benutzer auf die Benachrichtigung tippt.

Struktur des Payloads

{
  "notification": {
    "title": "Titel der Benachrichtigung",
    "body": "Textinhalt der Benachrichtigung"
  },
  "data": {
    "deep_link": "https://your-webapp.com/path/to/page"
  },
  "topic": "news"
}
Felder
  • notification.title (erforderlich): Der in der Benachrichtigung angezeigte Titel.
  • notification.body (erforderlich): Der in der Benachrichtigung angezeigte Text.
  • data.deep_link (erforderlich): Die URL, die die App im WebView aufruft, wenn der Benutzer auf die Benachrichtigung tippt. Muss eine gültige URL sein.
  • topic: Das FCM-Topic, an das die Benachrichtigung gesendet werden soll.

Beispiel: Senden via Firebase Admin SDK (Node.js)

import { getMessaging } from "firebase-admin/messaging";

// An ein Topic senden
await getMessaging().send({
  notification: {
    title: "Neues Update verfügbar",
    body: "Schauen Sie sich die neuesten Änderungen an.",
  },
  data: {
    deep_link: "https://your-webapp.com/updates",
  },
  topic: "news",
});

Verhalten

  • Der notification-Block steuert, wie die Benachrichtigung dem Benutzer angezeigt wird (Titel, Text, Ton, Badge).
  • Wenn der Benutzer auf die Benachrichtigung tippt, liest die App den Wert deep_link aus dem data-Block und lädt diesen im WebView.
  • Wenn die App beendet war, als auf die Benachrichtigung getippt wurde, wird der Deep Link beim Start über getInitialMessage verarbeitet.
  • Wenn sich die App im Hintergrund befand, wird der Deep Link über den onMessageOpenedApp-Stream verarbeitet.

Hinweise

  • Das data-Objekt muss der erwarteten Struktur für Dateianfragen entsprechen.
  • Die App behandelt Fehler und protokolliert diese, falls die Anfrage ungültig ist oder fehlschlägt.

Beispiele für den Versand von Push Nachrichten

<?php
    // Firebase server key
    $serverKey = 'your-firebase-server-key';
    
    // Database connection
    $pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
    
    // Nur für User IDs
    $user_id = 1; // Specify target user ID, or loop over users as needed
    $stmt = $pdo->prepare("SELECT token FROM user_tokens WHERE user_id = :user_id");
    $stmt->execute(['user_id' => $user_id]);
    $tokens = $stmt->fetchAll(PDO::FETCH_COLUMN);
    
    // Notification data
    $title = 'New Message!';
    $body = 'You have received a new message.';
    
    // Prepare notification payload
    $notification = [
        'title' => $title,
        'body' => $body,
        'icon' => 'icon.png',
        'click_action' => 'https://yourwebsite.com'
    ];
    
    $data = [
        'registration_ids' => $tokens, // array of tokens
        'notification' => $notification,
    ];
    
    // Set up curl to send request to FCM
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: key=' . $serverKey,
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    echo $response;
?>

Nützliche Blogbeiträge

Oder suchen Sie einfach nach “Firebase Nachrichten mit XYZ verschicken”.
Sollten Sie hier Hilfe brauchen, kontaktieren Sie uns gerne.