IBM Cloud Docs
Erstellen und Senden von Push-Benachrichtigungen an Android-Handys mit Event Notifications

Erstellen und Senden von Push-Benachrichtigungen an Android-Handys mit Event Notifications

Sie können einen Event Notifications-Service erstellen, ein Push-Ziel für Firebase Cloud Messaging (FCM) hinzufügen und Nachrichten an Android-Geräte senden.

Was ist Event Notifications?

Event Notifications ist ein Routing-Dienst für Ereignisbenachrichtigungen, der Sie über kritische Ereignisse in Ihrem IBM Cloud benachrichtigt oder mithilfe von Webhooks automatisierte Aktionen auslöst. Sie können Ereignisbenachrichtigungen von IBM Cloud wie Availability Monitoring, E-Mail, SMS, Push-Benachrichtigungen und Webhooks filtern und weiterleiten.

Wie verwenden Clients Android-Push-Benachrichtigungen?

Das folgende Diagramm zeigt, wie Clients Android-Push-Benachrichtigungen verwenden.

Wie Kunden
Kunden Push-Benachrichtigungen

Ziele

Dieses Lernprogramm zeigt im Folgenden, wie Sie Push-Benachrichtigungen senden:

  • Erstellen Sie eine mobile App mit Event Notifications.
  • FCM-Berechtigungsnachweise abrufen.
  • Laden Sie den Code herunter und schließen Sie die Benachrichtigungskonfiguration ab.
  • Konfigurieren und senden Sie Android-Push-Benachrichtigungen an ein mobiles Gerät.

Vorbereitende Schritte

Folgende Voraussetzungen müssen erfüllt sein:

  • Laden Sie Android Studio herunter und installieren Sie es, damit Sie Ihren Code importieren und erweitern können.
  • Ein Google-Konto zum Anmelden an der Firebase-Konsole, um project_id, private_key und client_email abzurufen.
  • Ein IBM Cloud-Konto. Wenn Sie nicht über ein Konto verfügen, erstellen Sie ein IBM Cloud-Konto.

Die in diesem Dokument verwendeten Anweisungen verwenden die HTTP v1 API von FCM. Die HTTP v1 API bietet Vorteile wie sichere Zugriffstoken, effiziente Anpassungen und zukunftssichere sowie erweiterbare Client-Plattformversionen. Weitere Informationen zur Migration von der FCM Legacy HTTP API zur HTTP v1 API finden Sie unter Migration der FCM Legacy HTTP API zur HTTP v1 API.

Erstellen Sie eine Event Notifications-Serviceinstanz.

  • Melden Sie sich bei Ihrem IBM Cloud an.
  • Suchen Sie im IBM Cloud-Katalog und wählen Sie Event Notifications > Event Notifications aus.
  • Wählen Sie eine Region in der Liste der unterstützten Regionen und eine pricing plan aus.
  • Geben Sie eine Service name an.
  • Wählen Sie eine resource group aus.
  • Akzeptieren Sie die Lizenzvereinbarungen und Bedingungen, indem Sie auf das Kontrollkästchen klicken.
  • Klicken Sie auf Create.

FCM-Berechtigungsnachweise abrufen

Firebase Cloud Messaging (FCM) ist das Gateway, das Push-Benachrichtigungen an Android-Geräte übermittelt. Um das Android-Push-Ziel auf der Konsole einzurichten, müssen Sie Ihre FCM-Zugangsdaten ' project_id, ' private_key und ' client_email erhalten.

  • Rufen Sie Firebase-Konsole auf. Eine Google-Benutzerkonto ist erforderlich.

  • Klicken Sie auf Create a project. Wenn Sie bereits über ein Projekt verfügen, klicken Sie auf Add Project.

  • Geben Sie im Create a project window einen Projektnamen ein und akzeptieren Sie die Bedingungen und aktivieren oder inaktivieren Sie Google Analytics (optional), indem Sie den Kippschalter auswählen und auf Continue klicken.

  • Wenn Google Analytics aktiviert ist, wählen Sie im Fenster Configure Google Analytics die Option Analytics location aus und akzeptieren Sie die Bedingungen.

  • Klicken Sie auf Create Project.

  • Klicken Sie auf Continue, wenn das neue Projekt bereit ist.

  • Wählen Sie im Navigationsfenster das Symbol settings neben Project Overview aus und wählen Sie Settings > Project settings aus.

  • Klicken Sie auf die Registerkarte " Service Accounts.

    FCM credentials
    FCM credentials

  • Klicken Sie auf Neuen privaten Schlüssel generieren, um Ihre Projektberechtigungsnachweise zu generieren. Die heruntergeladene Datei enthält project_id, private_key und client_email.

Generieren Sie google-services.json

Außerdem müssen Sie die Datei google-services.json generieren. Führen Sie die folgenden Schritte aus:

  • Klicken Sie im Abschnitt "Projektübersicht" der Firebase-Konsole unter Get started by adding Firebase to your app auf das Symbol Android.

    Firebase wird
    wird

  • Fügen Sie im Fenster Add Firebase to your Android app com.ibm.cloud.eventnotifications.destination.android als Paketnamen hinzu. Das Feld App nickname ist optional.

  • Klicken Sie auf Register APP (App registrieren).

    Add Firebase to your Android app
    Add Firebase to your Android app

  • Geben Sie den Paketnamen Ihrer Anwendung an. Geben Sie den Paketnamen im Fenster Add Firebase to your Android app ein. Das Feld App nickname ist optional.

  • Klicken Sie auf Register APP (App registrieren). Sehen Sie sich das folgende Beispiel an:

    caption-side=bottom"
    Android-App

  • Die Datei google-services.json wird generiert.

  • Laden Sie die neueste Konfigurationsdatei google-services.json unter Ihren Apps herunter.

Generische API-Quelle hinzufügen

Führen Sie die folgenden Schritte aus:

  • Wechseln Sie zum Abschnitt Sources des Event Notifications-Dashboards.
  • Klicken Sie auf Add und wählen Sie eine API-Quelle aus.
  • Geben Sie einen Namen und eine optionale Beschreibung ein und klicken Sie auf Add.

Ein neues Event Notifications-Ziel erstellen

Klicken Sie in der Event Notifications-Konsole auf Destinations und fügen Sie die folgenden Zieldetails hinzu:

  • Name: Fügen Sie einen Namen für das Ziel hinzu.
  • Description: Fügen Sie eine optionale Beschreibung für das Ziel hinzu.
  • Type: Wählen Sie den Typ " Android Push Notifications (FCM) aus der Dropdown-Liste.
  • Wählen Sie einen Zielplan aus: Vorproduktionsziel oder Produktionsziel.
    • Pre-production destination-Wählen Sie dieses Ziel als kostengünstiges Push-Ziel für Ihre Entwicklungs-und Testumgebung aus.
    • Production destination-Nutzen Sie die volle Funktionalität dieses Ziels. Unbegrenzt viele Geräte und ausgehende Nachrichten erlaubt.
  • Aktualisieren Sie die FCM-Push-Berechtigungsnachweise mit project_id, private_key und client_email aus der zuvor heruntergeladenen Datei.
  • Klicken Sie auf Hinzufügen.

Event Notifications-Thema erstellen

Wählen Sie Topics in der Event Notifications-Konsole aus und klicken Sie auf Create. Geben Sie die folgenden Themendetails ein:

  • Name: Geben Sie einen Namen für das Thema ein.
  • Description: Fügen Sie eine optionale Beschreibung für das Thema hinzu.
  • Source: Wählen Sie eine Quelle aus der Dropdown-Liste aus.
  • Event type: Wählen Sie in der Dropdown-Liste den Ereignistyp aus.
  • Event sub type: Wählen Sie den untergeordneten Ereignistyp aus der Dropdown-Liste der untergeordneten Ereignistypen aus.
  • Severity: Wählen Sie in der Dropdown-Liste den Schweregrad aus.
  • Advanced conditions: Schreiben Sie Ihre eigenen angepassten Bedingungen, die den jsonpath-Spezifikationen entsprechen müssen.

Event Notifications-Subskription erstellen

Klicken Sie in der Event Notifications-Konsole auf Subscriptions. Geben Sie die folgenden Abonnementdetails ein:

  • Klicken Sie auf Click, um den Subskriptionsassistenten anzuzeigen.
  • Vervollständigen Sie die folgenden Abonnementdetails:
    • Subscription name: Name des Abonnements.
    • Subscription description: Fügen Sie eine optionale Beschreibung hinzu.
  • Wählen Sie im Abschnitt Subscribe to a topic ein Thema aus der Dropdown-Liste aus und wählen Sie ein Ziel aus der Dropdown-Liste aus.
  • Destination type: Wählen Sie den Typ unter Destination aus und klicken auf Hinzufügen.

Event Notifications Android SDK einrichten

Android SDK ermöglicht Android-Apps den Empfang von Push-Benachrichtigungen. Führen Sie die folgenden Schritte aus, um Event Notifications Android SDK zu installieren, das SDK zu initialisieren und Benachrichtigungen für Ihre Android-App zu registrieren.

  • Installieren Sie Event Notifications mit Gradle.

    compile 'com.ibm.cloud:eventnotifications-destination-android:0.0.1'
    
  • Folgen Sie event-notifications-ziel-android-sdk, um das SDK zu installieren.

  • Wenn Gradle installiert ist, importieren und initialisieren Sie das SDK.

    import com.ibm.cloud.eventnotifications.destination.android.ENPush;
    
    String instanceGUID = "<instance_guid>>";
    String destinationID = "<instance_destination_id>";
    String apiKey = "<instance_apikey>";
    
    ENPush enPush = ENPush.getInstance();
    enPush.setCloudRegion(ENPush.REGION_US_SOUTH); // Set your region
    
    enPush.initialize(getApplicationContext(),instanceGUID,destinationID, apiKey);
    
  • Wenn das SDK initialisiert wurde, registrieren Sie sich für Push-Benachrichtigungen.

    // Register the device to Event Notifications
    enPush.registerDeviceWithUserId("userId",new ENPushResponseListener<String>() {
    
       @Override
       public void onSuccess(String deviceId) {
          //handle successful device registration here
       }
    
       @Override
       public void onFailure(ENPushException ex) {
          //handle failure in device registration here
       }
    });
    
  • Optional, wenn Sie auch Push-Tag-Abonnement erstellen können, subscribeToPushTag für Push-Gerät. Die Subscribe-API abonniert das Gerät für ein bestimmtes Tag. Nachdem das Gerät einen bestimmten Tag abonniert hat, kann das Gerät Benachrichtigungen empfangen, die für diesen Tag gesendet werden. Fügen Sie das folgende Codeschnipsel in Ihre mobile Android-Anwendung ein, um eine Liste von Tags zu abonnieren.

    // Subscribe to the given tag, if tagname is not available it will first get create then push device will get subscribe to it.
    enPush.subscribe(tagName, new ENPushResponseListener<String>() {
    
       @Override
       public void onSuccess(String arg) {
          System.out.println("Succesfully Subscribed to: "+ arg);
       }
    
       @Override
       public void onFailure(ENPushException ex) {
          System.out.println("Error subscribing to Tag1.." + ex.getMessage());
       }
    });
    
  • Fügen Sie den Listener für Benachrichtigungen für den Empfang der Benachrichtigung in Ihrer Anwendung hinzu.

    //Handles the notification when it arrives
    ENPushNotificationListener notificationListener = new ENPushNotificationListener() {
    
       @Override
       public void onReceive (final ENSimplePushNotification message){
          // Handle Push Notification
       }
    };
    
    if(enPush != null) {
       enPush.listen(notificationListener);
    }
    
  • Führen Sie nach Abschluss der Konfiguration Ihre Anwendung aus und registrieren Sie sich für Push-Benachrichtigungen.

Benachrichtigungen an das Android-Gerät senden

Verwenden Sie API zum Senden von Benachrichtigungen, um die Push-Benachrichtigung für das Android-Gerät zu senden. Sie können das Knoten- oder Go-Administrator-SDK verwenden, anstatt die API direkt aufzurufen.

caption-side=bottom"

caption-side=bottom"
Benachrichtigungen

Migration der FCM-Legacy-HTTP-API zur HTTP v1

Anwendungen, die die FCM Legacy-HTTP-API verwenden, sollten eine Migration zur HTTP v1 anhand der Anweisungen in diesem Abschnitt in Betracht ziehen. Die HTTP v1 API bietet Vorteile wie sichere Zugriffstoken, effiziente Anpassungen und zukunftssichere sowie erweiterbare Client-Plattformversionen.

In Event Notificationskönnen Sie ein Android-Ziel unter Einhaltung der FCM-Normen erstellen. Für die alte HTTP-API haben wir Unterstützung über zwei erforderliche Parameter server_key und sender_id bereitgestellt. For the v1 HTTP API, FCM introduced three new parameters: project_id, client_email, and private_key. Wichtig ist hier, dass sich Legacy- und v1 gegenseitig ausschließen, was wir in Event Notifications berücksichtigt haben.

So können Sie eine Migration von einer alten auf eine neue Konfiguration durchführen.

  1. Unter Ihrer vorhandenen FCM-Android-Zielkonfiguration finden Sie server_key und sender_id. Jetzt müssen Sie nur das vorhandene Ziel aktualisieren, indem Sie project_id, client_email und private_key den API-Aufruf PATCH /destinations/{id} verwenden.

    Vorhandene Android-Zielkonfiguration:

    {
       "name": "Existing android destination",
       "description": "Android destination with legacy parameters",
       "type": "push_android",
       "config": {
          "params": {
             "sender_id": "xxxxxx",
             "server_key": "xxxxxx"
          }
       }
    }
    

    Neue Android-Zielkonfiguration:

    {
       "name": "New android destination",
       "description": "Android destination with V1 HTTP parameters",
       "type": "push_android",
       "config": {
          "params": {
             "project_id": "xxxxx",
             "private_key": "xxxxx",
             "client_email": "abc@xyz.pqr"
          }
       }
    }
    

Beispiele für Änderungen der FCM-Nutzdaten

  • FCM Legacy HTTP API

    {
       "notification": {
       "title": "Incidunt qui porro sequi iste assumenda esse animi.",
       "body": "Minus reprehenderit ut nisi. Aut earum qui est iure eos fuga."
       },
       "data": {
          "name": "Willie Greenholt",
          "description": "Voluptas voluptatem sed quia expedita error a at sit rerum. Numquam unde debitis incidunt qui impedit et necessitatibus. Cupiditate exercitationem enim ut laborum itaque et."
       }
    }
    
  • FCM HTTP v1 API

    {
       "message": {
          "android": {
             "notification": {
                "title": "Incidunt qui porro sequi iste assumenda esse animi.",
                "body": "Minus reprehenderit ut nisi. Aut earum qui est iure eos fuga."
             },
             "data": {
                "name": "Willie Greenholt",
                "description": "Voluptas voluptatem sed quia expedita error a at sit rerum. Numquam unde debitis incidunt qui impedit et necessitatibus. Cupiditate exercitationem enim ut laborum itaque et."
             }
          }
       }
    }