Freigeben über


Pushbenachrichtigungen für Android

Voraussetzungen

Konfigurieren des Android-Benachrichtigungskanals

Firebase-Einrichtung

Es gibt drei Google-Websites, die Sie verwenden und synchronisieren müssen. In Google/Firebase gibt es sowohl Projekte als auch Apps:

PlayFab erfordert eine Datei mit einem privaten Serverschlüssel.

  • Sie können diese Datei mit dem privaten Schlüssel über die Firebase-Konsole abrufen.
  • Firebase-Konsole:
    • Wählen Sie Ihr Projekt oder Ihre App aus, und suchen Sie die Option Einstellungen (es gibt viele Möglichkeiten, die Sie an denselben Ort führen).
    • Wählen Sie auf der Registerkarte Dienstkonten die Schaltfläche Neuen privaten Schlüssel generieren aus, um die JSON-Datei herunterzuladen.

Verwenden der Datei mit dem privaten Schlüssel

  • Geben Sie Ihre Private Key-Datei auf eine von zwei Arten an:

    1. Laden Sie die Datei mit dem privaten Schlüssel direkt in die Game Manager-Benutzeroberfläche hoch: Einstellungen (für Ihren Titel) >Pushbenachrichtigungen>Android.
    2. Oder rufen Sie SetupPushNotification mit Postman oder einem Unity-Projekt mit aktivierten Server-API-Methoden auf.
    • Name: your_game_name

    • Plattform: GCM

    • Anmeldeinformationen: (Inhalt der Datei mit privatem Schlüssel als Zeichenfolge): { ... }

    • OldARN überschreiben: true

    • Sie sollten eine HTTP 200 OK-Antwort mit Daten erhalten, die den folgenden ähneln.

      // Postman JSON result output
      {
          "code": 200,
          "status": "OK",
          "data": { "ARN" : "arn:*******/GCM/your_game_name" }
      }
      
  • Nach der ordnungsgemäßen Einrichtung (mit einer der beiden Methoden) sollte dies in den Einstellungen der Game Manager-Benutzeroberfläche(für Ihren Titel) > Pushbenachrichtigungen > Android angezeigt werden.

    PlayFab-Einstellungen – Pushbenachrichtigungen – Android

Erste Schritte: Pushbenachrichtigungen für Android + Unity

So richten Sie Ihr Unity-Projekt ein:

  • Erstellen Sie ein neues Unity-Projekt.

  • [OPTIONAL] Importieren Sie das PlayFab Unity Editor Extensions-Paket.

  • Importieren Sie das Unity PlayFab SDK-Paket .

  • Befolgen Sie den FCM Unity-Leitfaden , um FCM-Messaging zu installieren und ein Projekt für Pushbenachrichtigungen einzurichten.

    • Nach Abschluss des Vorgangs können Sie mit diesem Leitfaden fortfahren, um Nachrichten von PlayFab zu empfangen.
    • Im folgenden Beispiel erhalten Sie ein vollständiges FCM-fähiges monoBehaviour-Skript, das FCM und PlayFab kombiniert.
  • Im FCM-Leitfaden haben Sie ein Monobehavior-Skript erstellt, das das Firebase-Plug-In eingerichtet hat.

    • Sie können dieses Monobehavior-Skript weiterhin verwenden oder durch das Skript im folgenden Beispiel ersetzen.

Einrichten Ihrer ersten Pushbenachrichtigung

Öffnen Sie in Unity das Skript, das Sie im FCM-Tutorial erstellt haben, und ersetzen Sie den Inhalt.

using PlayFab;
using PlayFab.ClientModels;
using PlayFab.Json;
using UnityEngine;

public class MsgCatcher : MonoBehaviour
{
    public string pushToken;
    public string playFabId;
    public string lastMsg;

    // OnGUI should be deleted/replaced with your own gui - This is only provided for debugging
    public void OnGUI()
    {
        GUI.Label(new Rect(0, 0, Screen.width, 200), pushToken);
        GUI.Label(new Rect(0, 200, Screen.width, Screen.height - 200), lastMsg);
    }

    private void OnPfFail(PlayFabError error)
    {
        Debug.Log("PlayFab: api error: " + error.GenerateErrorReport());
    }

    public void Start()
    {
        // PlayFabSettings.TitleId = "TITLE_ID";
        Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
        Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
        LoginToPlayFab();
    }

    private void LoginToPlayFab()
    {
#if UNITY_ANDROID
        var request = new LoginWithAndroidDeviceIDRequest { AndroidDeviceId = SystemInfo.deviceUniqueIdentifier, CreateAccount = true, };
        PlayFabClientAPI.LoginWithAndroidDeviceID(request, OnPfLogin, OnPfFail);
#endif
    }

    private void OnPfLogin(LoginResult result)
    {
        Debug.Log("PlayFab: login successful");
        playFabId = result.PlayFabId;
        RegisterForPush();
    }

    private void RegisterForPush()
    {
        if (string.IsNullOrEmpty(pushToken) || string.IsNullOrEmpty(playFabId))
            return;

#if UNITY_ANDROID
        var request = new AndroidDevicePushNotificationRegistrationRequest {
            DeviceToken = pushToken,
            SendPushNotificationConfirmation = true,
            ConfirmationMessage = "Push notifications registered successfully"
        };
        PlayFabClientAPI.AndroidDevicePushNotificationRegistration(request, OnPfAndroidReg, OnPfFail);
#endif
    }

    private void OnPfAndroidReg(AndroidDevicePushNotificationRegistrationResult result)
    {
        Debug.Log("PlayFab: Push Registration Successful");
    }

    private void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
    {
        Debug.Log("PlayFab: Received Registration Token: " + token.Token);
        pushToken = token.Token;
        RegisterForPush();
    }

    private void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e)
    {
        Debug.Log("PlayFab: Received a new message from: " + e.Message.From);
        lastMsg = "";
        if (e.Message.Data != null)
        {
            lastMsg += "DATA: " + JsonWrapper.SerializeObject(e.Message.Data) + "\n";
            Debug.Log("PlayFab: Received a message with data:");
            foreach (var pair in e.Message.Data)
                Debug.Log("PlayFab data element: " + pair.Key + "," + pair.Value);
        }
        if (e.Message.Notification != null)
        {
            Debug.Log("PlayFab: Received a notification:");
            lastMsg += "TITLE: " + e.Message.Notification.Title + "\n";
            lastMsg += "BODY: " + e.Message.Notification.Body + "\n";
        }
    }
}

Erstellen Sie Ihr Unity-Projekt, und führen Sie es auf einem Gerät aus. Wenn Sie eine Pushbenachrichtigung mit dem Text Erhalten, Pushbenachrichtigungen erfolgreich registriert, funktionierte alles wie erwartet.

Notiz

PlayFabSettings.TitleId = TITLE_ID. Sie müssen Ihre eigene TitleIdfestlegen. Dieses Beispiel funktioniert nicht, wenn Sie dieses TitleIdnicht aktualisieren, da unser Titel bei unseren Firebase-Schlüsseln und -Einstellungen und nicht bei Ihren registriert ist. Sie können dies tun, indem Sie den Kommentar dieser Zeile aufheben und durch Ihre titleIdersetzenTITLE_ID, oder Sie können Ihren Titel aus dem optionalen Editor Extensions-Plug-In auswählen, das im vorherigen Abschnitt erwähnt wurde.

Problembehandlung bei Android

  • Vergewissern Sie sich, dass Sie testpushbenachrichtigungen über die Firebase-Konsole senden können.

    • Wenn dies nicht möglich ist, ist Ihr Firebase-Plug-In nicht ordnungsgemäß eingerichtet, und Sie sollten die Firebase-Dokumentation lesen, um herauszufinden, warum, oder wenden Sie sich an den Firebase-Support.
  • Stellen Sie sicher, dass Ihr FCM-Client pushToken ordnungsgemäß festgelegt ist.

    • Die OnTokenReceived Funktion im Beispiel sollte aufgerufen werden und über ein gültiges Token verfügen.
    • Wenn es nicht aufgerufen wird, ist Ihr Firebase-Plug-In nicht ordnungsgemäß eingerichtet, und Sie sollten die Firebase-Dokumentation lesen, um herauszufinden, warum, oder wenden Sie sich an den Firebase-Support.
  • Stellen Sie sicher, dass auf titleId einen Titel festgelegt ist, den Sie besitzen, und dass er mit dem Server-API-Schlüssel aus Ihrem Firebase-Projekt registriert wurde.

Erweiterte Features

Im Server.SendPushNotification können Sie die Anforderung verwenden. Paket. CustomData , um beliebige Daten an das Gerät zu übermitteln. Im vorherigen Beispiel wird dies mit dem folgenden Kommentar an den Abschnitt übermittelt.

 Debug.Log("PlayFab: Received a message with data:");

Sie können Ihren Clientempfänger so anpassen, dass er diese Daten nach Ihren Wünschen verwendet. CustomData wird dem Spieler nicht angezeigt, sodass es verwendet werden kann, um benutzerdefinierte Spielinformationen an Ihren Client zu übermitteln oder lokal eine weitere zukünftige Benachrichtigung mithilfe des FCM-Plug-Ins zu planen.

Sie können auch die Anforderung verwenden. Paket. CustomData oder Fordern Sie AdvancedPlatformDelivery an, um an viele Plug-Ins von Drittanbietern zu liefern.

Notiz

Die Bereitstellung von Drittanbieter-Plug-Ins wird nicht unterstützt oder garantiert, ist jedoch für fortgeschrittene Benutzer verfügbar.

Zusätzlicher Support

Wenn Sie Hilfe, z. B. Fehler und verwandte Fragen benötigen, senden Sie uns eine Zeile in unseren Foren.

Derzeit unterstützen wir unsere Dienste nur für den in diesem Dokument beschriebenen Standardflow. Wenn Ihr Team nach zusätzlichen Funktionen mit anderen gängigen Push-Diensten oder Plug-Ins sucht, teilen Sie uns dies bitte mit! Wir freuen uns, Feedback von unserer Entwicklercommunity zu erhalten.

Dokumentation zur Pushnutzlast über Amazon SNS: