DEV Community

Cover image for Wie man Firebase Push-Benachrichtigungen an Android sendet

Wie man Firebase Push-Benachrichtigungen an Android sendet

Bei der Entwicklung mobiler Anwendungen gibt es kaum einen Anwendungsfall, bei dem Sie die Benutzer nicht mit Alarmen oder Push-Benachrichtigungen benachrichtigen müssen.

Bevor Sie weiter lesen, haben wir auch eine spezielle Demo und ein Tutorial für Push-Benachrichtigungen sowohl für Andorid als auch für iOS

Betrachten wir zum Beispiel das folgende Szenario: Sie entwickeln eine Echtzeit-Sportanwendung, die ihre Nutzer während eines Spiels mit wichtigen Nachrichten versorgt. Eine wichtige Funktion der App wäre es, zuverlässige mobile Push-Benachrichtigungen an die Nutzer zu senden, sobald ihr Lieblingsteam einen Treffer erzielt.

Jedes mobile Betriebssystem bietet eine eigene Lösung für Push-Benachrichtigungen in nativen Anwendungen, so dass es schwierig sein kann, diese in Ihre Anwendung zu integrieren. Bei Android ist der Mechanismus, den native Anwendungen für Push-Benachrichtigungen verwenden, Firebase Cloud Messaging (FCM). PubNub ist mit FCM einen Schritt weiter gegangen und hat die Verwendung von Firebase Cloud Messaging-Benachrichtigungen in die PubNub Real-time Communications Platform integriert.

Wenn eine App im Vordergrund ist, leisten die Kanäle von PubNub gute Arbeit bei der Bereitstellung von Echtzeit-Datenströmen. Schwierig wird es, wenn die App im Hintergrund läuft, wenn der Benutzer sein Telefon gesperrt hat und vor allem, wenn der Benutzer nur zeitweise Zugang zu einer Internetverbindung über WiFi oder LTE hat. Um diese schwierigen Fälle zu bewältigen, ist die einfachste Lösung die Implementierung von Firebase Push-Benachrichtigungen.

Ein Überblick darüber, wie man Firebase Push-Benachrichtigungen mit FCM an Android sendet

FCM ist ein kostenloser Dienst von Google, mit dem Nutzer zuverlässig und kostenlos Firebase-Push-Benachrichtigungen versenden können.

Sie können mit FCM zwei Arten von Nachrichten an Ihre App senden:

  • Benachrichtigungsnachrichten, manchmal auch als "Display-Nachrichten" bezeichnet. Diese werden vom FCM SDK automatisch verarbeitet.
  • Datenmeldungen, die von der Client-Anwendung verarbeitet werden.
  • Benachrichtigungsnachrichten enthalten einen vordefinierten Satz von für den Benutzer sichtbaren Schlüsseln und können eine optionale Daten-Nutzlast enthalten.
  • Datenmeldungen enthalten nur Ihre benutzerdefinierten Schlüssel-Wert-Paare.
  • Die maximale Nutzlast für beide Nachrichtentypen beträgt 4 KB.

Sie können eine Datennachricht, eine Benachrichtigungsnachricht oder beides senden, aber es ist wichtig, dass Sie nur eine Datennachricht senden, da Ihr Code explizit für die Anzeige der Push-Benachrichtigung verantwortlich ist. Eine Benachrichtigungsnachricht wird automatisch von FCM verarbeitet, um die Nutzdaten der Benachrichtigung anzuzeigen.

Du solltest Benachrichtigungsnachrichten verwenden, wenn du möchtest, dass Firebase die Anzeige einer Benachrichtigung im Namen deiner Client-App übernimmt, und du solltest Datennachrichten verwenden, wenn du die Nachrichten in deiner Client-App verarbeiten möchtest. Sie können eine Benachrichtigungsnachricht mit einer optionalen Datennutzlast senden und FCM wird die Anzeige der Benachrichtigungsnutzlast übernehmen, während Ihre Client-App die Datennutzlast verarbeitet.

Das FCM-System berücksichtigt 3 Parteien:

  • Die Client-Anwendung.
  • Die FCM-Server von Google (das Backend)
  • Ihr Push-Server eines Drittanbieters.

Wenn ein Nutzer eine Anwendung installiert, muss sie sich registrieren, um FCM zu aktivieren. Hier ist der FCM-Workflow für das Senden einer Benachrichtigung:

  • Der Push-Server Ihres Drittanbieters sendet die Push-Benachrichtigung an die FCM-Server von Google. Dies ist der Teil, den PubNub ersetzen und vereinfachen kann.
  • Diese Server leiten die Nachricht an alle Ihre registrierten mobilen Anwendungen weiter.
  • Nachrichten werden für Geräte, die offline sind, gespeichert.
  • Sobald ein Gerät wieder online ist, leiten die FCM-Server die in der Warteschlange stehende Nachricht weiter.
  • Die Nachrichten werden auf dem Gerät des Benutzers empfangen und entsprechend der plattformspezifischen Implementierung dargestellt.

Wie man mit PubNub eine Firebase Push-Benachrichtigung an Android sendet

Wenn Sie PubNub Real-time Messaging verwenden, kommunizieren Sie bereits in Echtzeit mit all Ihren Geräten - aber wenn Sie Push-Benachrichtigungen für ein natives Android-Erlebnis senden möchten, ist FCM ein großartiger Verbündeter.Mobile Push Notification Powered By PubNub

Wenn Ihre Anwendung für mehrere Plattformen bestimmt ist, macht PubNub Ihnen das Leben leichter, denn es unterstützt Apple Push Notification Service (APNs) und Firebase von Haus aus. Selbst wenn Sie noch nicht mehrere Plattformen unterstützen, können Sie mit der PubNub-Unterstützung für FCM Ihren Code rationalisieren, indem Sie einen einzigen Satz von Bibliotheken für PubNub Data Streams und Firebase-Benachrichtigungen verwenden.

PubNub hat eine einfache Integration mit FCM. Ein PubNub-Kanal ersetzt die Server von Drittanbietern, die diese Benachrichtigungen an die FCM-Server von Google senden. Sie können jeden registrierten Endpunkt eine Push-Benachrichtigung an Ihre angeschlossenen Geräte senden lassen.

So kann die Anwendung im Handumdrehen Push-Benachrichtigungen an Geräte senden, die auf bestimmten Kanälen registriert sind. Es kombiniert die native Android Notification API von Google mit dem Echtzeit-Datenstrom-Netzwerk von PubNub. Ihre Echtzeit-Push-Benachrichtigungen werden nativ von jedem Android-Gerät verstanden. Wenn Sie bereits FCM in Ihrer Anwendung einsetzen und die Verwendung von PubNub in Erwägung ziehen, müssen Sie kaum etwas an Ihrer Anwendung ändern, höchstwahrscheinlich Code entfernen!

Um auf das Szenario der Sportnachrichten-App zurückzukommen: Sie können Ihren Sportkritiker den Spielstand in Echtzeit von seinem Telefon senden lassen und eine Push-Benachrichtigung an die übrigen Geräte des Publikums auslösen. PubNub macht es einfach - zusätzliche Server, die Sie betreiben müssen, können ausgeschlossen werden, und die automatische Skalierung wird von PubNub verwaltet!

Firebase Cloud Messaging (FCM) ist ein Rebranding von Google Cloud Messaging (GCM) und es gibt keinen funktionalen Unterschied zur Handhabung in PubNub. Wenn Sie Verweise auf GCM sehen, sollten Sie stattdessen FCM verwenden.

Erste Schritte mit Firebase Push-Benachrichtigungen mit PubNub

Möchten Sie das fertige Firebase-Push-Benachrichtigungsprojekt herunterladen? https://github.com/PubNubDevelopers/Android-Push-Notifications

In diesem Tutorial erstellen wir eine neue Android-App, richten Firebase-Push-Benachrichtigungen ein, aktivieren mobile Push-Benachrichtigungen von PubNub und konfigurieren das PubNub Android SDK, um mobile Push-Benachrichtigungen zu empfangen. Zuerst müssen Sie sich füreinen kostenlosen PubNub-Account anmelden. Sobald Sie sich angemeldet haben, erstellen Sie eine neue App und erhalten dann Ihre eindeutigen PubNub-Schlüssel aus dem PubNub Admin Dashboard. Notieren Sie den Publish Key und den Subscribe Key, damit Sie sie später verwenden können.

Eine neue Android App erstellen

Überspringen Sie diesen Abschnitt, wenn Sie bereits eine App haben, die Sie mit FCM und PubNub verwenden möchten.

Installieren Sie das Java SE Development Kit (JDK 8 oder nie).

Laden Sie Android Studio herunter und installieren Sie es.

Klicken Sie im Fenster Welcome to Android Studio auf "Start a new Android Studio project".

Legen Sie den Anwendungsnamen und die Unternehmensdomäne fest und ändern Sie eventuell den Projektstandort. Wenn Sie eine Kotlin- oder Flutter-Anwendung schreiben möchten, aktivieren Sie das entsprechende Kontrollkästchen. Notieren Sie sich den Paketnamen, Sie werden ihn später benötigen. Lassen Sie die anderen Optionen so wie sie sind. Klicken Sie auf "Weiter".

Create New Android App

Setzen Sie das Minimum SDK auf "API23: Android 6.0 (Mashmallow)". Klicken Sie auf "Weiter".

Wählen Sie "Leere Aktivität". Klicken Sie auf "Weiter". Behalten Sie die Standardwerte bei und klicken Sie auf "Fertigstellen".

Hinzufügen von Firebase Cloud Messaging zur Erstellung Ihrer Echtzeit-Benachrichtigungen

Erstellen Sie ein Firebase-Konto oder melden Sie sich dort an.

Klicken Sie auf "Projekt hinzufügen" in Ihrer Firebase-Konsole, um ein Firebase-Projekt zu erstellen.

Add Project to Firebase

Legen Sie den Projektnamen und die Standorte fest.

Add a project to firebase

Fügen Sie dann Firebase zu Ihrer Android-App hinzu.

Add Firebase to App

Geben Sie den Paketnamen und einen Spitznamen für Ihre App ein. Sie finden den Paketnamen für Ihre App oben in "android/app/src/main/java/com/[IhrAppName]/MainApplication.java". Lassen Sie das SHA-1 weg (wird in diesem Tutorial nicht benötigt). Klicken Sie auf "App registrieren".

Laden Sie die Datei google-services.json in das Stammverzeichnis Ihres Android-App-Moduls herunter. Fügen Sie das Firebase SDK nicht hinzu. Überspringen Sie die Firebase-Konsole und fahren Sie mit den Schritten in diesem Tutorial fort, um das Firebase SDK und das PubNub SDK zu Ihrer App hinzuzufügen.

Download Config File For Android App

Gehen Sie zu Ihrem PubNub Admin Dashboard, wählen Sie Ihre App und dann Ihr Keyset aus.

Scrollen Sie nach unten zu "Mobile Push Notifications", aktivieren Sie das Add-on Push Notifications (falls nicht bereits aktiviert) und geben Sie den API-Schlüssel für die soeben erstellte App in der Firebase-Konsole ein. Sie finden Ihren API-Schlüssel (in der Firebase-Konsole als Server-Schlüssel aufgeführt), indem Sie in der linken Seitenleiste auf "Projektübersicht" gehen, auf die Kebob-Menüschaltfläche ("⋮")oben rechts in den Metriken Ihrer App klicken, auf "Einstellungen" klicken und die Registerkarte "Cloud Messaging" auswählen.

Konfigurieren Sie FCM und PubNub für Ihre Firebase Mobile Push-Benachrichtigungen

Bearbeiten Sie Ihre build.gradle-Datei auf Projektebene (/build.gradle) und fügen Sie die folgende Zeile hinzu:

buildscript {
  dependencies {
    // Add this line
    classpath 'com.google.gms:google-services:4.0.1'
  }
}
Enter fullscreen mode Exit fullscreen mode

Nachdem Sie diese Zeile hinzugefügt haben, wird eine gelbe Meldung angezeigt, die Sie auffordert, das Projekt zu synchronisieren. Ignorieren Sie sie vorerst.

Bearbeiten Sie Ihre build.gradle-Datei auf App-Ebene (//build.gradle) und fügen Sie Folgendes hinzu:

dependencies {
  // Add this line.
  implementation 'com.google.firebase:firebase-core:16.0.1'
  // Firebase Messaging library for sending push notifications. Add this line.
  implementation 'com.google.firebase:firebase-messaging:17.3.3'
  // PubNub Android SDK. Add this line.
  implementation group: 'com.pubnub', name: 'pubnub-gson', version: '4.20.0'
}
...
// Add to the bottom of the file
apply plugin: 'com.google.gms.google-services'
Enter fullscreen mode Exit fullscreen mode

Klicken Sie auf "Sync now" in der Leiste, die in Android Studio erscheint.

Android Studio Sync Message

Bearbeiten Sie Ihre MainActivity.java-Datei, um das PubNub Android SDK zu initialisieren. Sie müssen auch Benachrichtigungskanäle für Android API Level 26+ erstellen, um Push-Benachrichtigungen anzuzeigen.

package com.pubnub.hellopush;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import com.pubnub.api.PNConfiguration;
import com.pubnub.api.PubNub;
public class MainActivity extends AppCompatActivity {
    public static PubNub pubnub; // PubNub instance
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initPubnub();
        createChannel();
    }
    // Creates PubNub instance with your PubNub credentials. https://admin.pubnub.com/signup
    // This instance will be used when we need to create connection to PubNub.
    private void initPubnub() {
        PNConfiguration pnConfiguration = new PNConfiguration();
        pnConfiguration.setPublishKey("YOUR_PUB_KEY_HERE");
        pnConfiguration.setSubscribeKey("YOUR_SUB_KEY_HERE");
        pnConfiguration.setSecure(true);
        pubnub = new PubNub(pnConfiguration);
    }
    // Creates notification channel.
    private void createChannel() {
        // Notification channel should only be created for devices running Android API level 26+. 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            NotificationChannel chan1 = new NotificationChannel(
                    "default",
                    "default",
                    NotificationManager.IMPORTANCE_NONE);
            chan1.setLightColor(Color.TRANSPARENT);
            chan1.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
            notificationManager.createNotificationChannel(chan1);
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Holen Sie sich Ihre eindeutigen PubNub-Schlüssel aus dem PubNub Admin Dashboard. Ersetzen Sie "YOUR_PUB_KEY_HERE" und "YOUR_SUB_KEY_HERE" durch Ihre Schlüssel aus dem PubNub Admin Dashboard.

Sie müssen einen Dienst hinzufügen, um das Gerätetoken zu erhalten und eine Methode, um das Token an Ihren Registrierungsserver (PubNub) zu senden. Mit dem PubNub Android SDK verknüpfen Sie einen Kanal mit einem Registrierungstoken. Um die Verarbeitung von Datennachrichten oder die Anzeige von Benachrichtigungen im Vordergrund zu ermöglichen, müssen Sie auch einen Dienst hinzufügen, der FirebaseMessagingService erweitert.

Erweitern Sie im Projektexplorer die Verzeichnisse "app > java > [Paketname]". Klicken Sie dann mit der rechten Maustaste und wählen Sie "Neu > Java-Klasse". Nennen Sie die Klasse "MyFirebaseMessageService.Java".

package com.pubnub.hellopush;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.pubnub.api.callbacks.PNCallback;
import com.pubnub.api.enums.PNPushType;
import com.pubnub.api.models.consumer.PNStatus;
import com.pubnub.api.models.consumer.push.PNPushAddChannelResult;
import java.util.Arrays;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
    private static final String TAG = "FirebaseService";
    @Override
    public void onNewToken(String token) {
        super.onNewToken(token);
        Log.d(TAG,"NEW_TOKEN: "+token);
        sendRegistrationToPubNub(token);
    }
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        // If the application is in the foreground handle or display both data and notification FCM messages here.
        // Here is where you can display your own notifications built from a received FCM message.
        super.onMessageReceived(remoteMessage);
        Log.d(TAG, "From: " + remoteMessage.getFrom());
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, "Message data payload: " + remoteMessage.getData());
        }
        if (remoteMessage.getNotification() != null) {
            Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
        }
        // displayNotification(remoteMessage.getNotification().getBody());
    }
    private void sendRegistrationToPubNub(String token) {
        // Configure PubNub mobile push notifications.
        MainActivity.pubnub.addPushNotificationsOnChannels()
            .pushType(PNPushType.GCM)
            .channels(Arrays.asList("HelloPush", "TestPushChannel"))
            .deviceId(token)
            .async(new PNCallback<PNPushAddChannelResult>() {
                @Override
                public void onResponse(PNPushAddChannelResult result, PNStatus status) {
                    Log.d("PUBNUB", "-->PNStatus.getStatusCode = " + status.getStatusCode());
                }
            });
    }
}
Enter fullscreen mode Exit fullscreen mode

Fügen Sie die Klasse in Ihre AndroidManifest.xml-Datei ein.

<service android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>
Enter fullscreen mode Exit fullscreen mode

Fügen Sie diese Berechtigungen in Ihrer AndroidManifest.xml-Datei vor dem <application>-Tag hinzu.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Enter fullscreen mode Exit fullscreen mode

Senden von mobilen Push-Benachrichtigungen von PubNub

Erstellen und starten Sie Ihre Anwendung auf einem Android-Gerät oder mit einem Android-Emulator.

Sie können mit PubNub mobile Push-Benachrichtigungen senden, indem Sie eine Nachricht an den Kanal oder die Kanäle veröffentlichen, zu denen die Geräte hinzugefügt wurden. Es ist wichtig zu wissen, dass die Geräte einen Kanal nicht abonnieren müssen, um Benachrichtigungen für diesen Kanal zu erhalten. Die Geräte müssen sich nur bei dem Kanal für Push-Benachrichtigungen registrieren und erhalten dann Push-Benachrichtigungen für alle Nachrichten, die Push-Benachrichtigungsschlüssel für diesen Gerätetyp haben.

PubNub Debug Client

  • Zugehörige FCM-Geräte erhalten nur die Daten innerhalb des pn_gcm-Schlüssels.
  • Native PubNub-Abonnenten erhalten das gesamte Objektliteral, einschließlich der Benachrichtigungsschlüssel.

In diesem Tutorial haben Sie das Gerät für den Kanal "Notifications" registriert. Alle Nachrichten, die mit pn_gcm-Schlüsseln an diesen Kanal gesendet werden, werden als mobile Push-Benachrichtigung an registrierte Geräte gesendet.

Der einfachste Weg, mobile Push-Benachrichtigungen zu testen, ist, sie von der PubNub Debug Console aus dem PubNub Admin Dashboard zu senden.

Gehen Sie zu Ihrem PubNub Admin Dashboard, wählen Sie Ihre App und dann Ihr Keyset aus.

Klicken Sie auf "Debug Console" und erstellen Sie einen Client, dessen "Default Channel" auf Notifications eingestellt ist.

Mit dem soeben erstellten Client können Sie eine Benachrichtigung an Ihr Gerät senden, indem Sie eine Nachricht mit den pn_gcm-Schlüsseln senden.

Senden Sie eine Android-Push-Benachrichtigung mit dem Benachrichtigungsschlüssel:

{"pn_gcm":{"notification":{"body":"Hello World."}}}
Enter fullscreen mode Exit fullscreen mode

Hello World Android Push NotificationLesen Sie die Anleitung zur Fehlerbehebung, wenn Sie Probleme beim Senden von mobilen Push-Benachrichtigungen haben.

Inhalt

Ein Überblick über das Senden von Firebase-Push-Benachrichtigungen an Android mit FCMWieman eine Firebase-Push-Benachrichtigung an Android mit PubNub sendetEinstiegin Firebase-Push-Benachrichtigungen mit PubNubErstelleneiner neuen Android-AnwendungHinzufügen vonFirebase Cloud Messaging, um Ihre Echtzeit-Benachrichtigungen zu erstellenKonfigurieren SieFCM und PubNub für Ihre mobilen Firebase-Push-BenachrichtigungenSenden vonmobilen Push-Benachrichtigungen von PubNub

Wie kann PubNub Ihnen helfen?

Dieser Artikel wurde ursprünglich auf PubNub.com veröffentlicht.

Unsere Plattform hilft Entwicklern bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

PubNub erleben

Sehen Sie sich die Live Tour an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten

Melden Sie sich für einen PubNub-Account an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie

Mit den PubNub-Dokumenten können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder SDK

Top comments (0)