Pushbenachrichtigungen für Android
Voraussetzungen
- Schnellstart: Pushbenachrichtigungen
- Unity3D-Schnellstart
- [Optional] Unity-Editor-Erweiterungen
- [Optional] Postman-Schnellstart
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:
Projekt:
- Importieren Sie Ihr Projekt in die Firebase-Konsole , falls es noch nicht vorhanden ist.
App:
- Fb Projekte enthalten Apps.
- Stellen Sie sicher, dass Ihre App an beiden Standorten mit demselben Namen und Bezeichner vorhanden ist (z. B. Unicorn Battle und com.playfab.unicornbattle2).
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:
- Laden Sie die Datei mit dem privaten Schlüssel direkt in die Game Manager-Benutzeroberfläche hoch: Einstellungen (für Ihren Titel) >Pushbenachrichtigungen>Android.
- 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.
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-Erweiterungspaket .
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 TitleId
festlegen. Dieses Beispiel funktioniert nicht, wenn Sie dieses TitleId
nicht 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 titleId
ersetzenTITLE_ID
, oder Sie können Ihren Titel aus dem optionalen Editor-Erweiterungen-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.
- Die
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: