Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Richten Sie mit Unity eine Firebase Cloud Messaging-Client-App ein

Verwenden Sie die Firebase Cloud Messaging- API, um Ihre plattformübergreifende Firebase Cloud Messaging-Client-App mit Unity zu schreiben. Das Unity SDK funktioniert sowohl für Android als auch für iOS. Für jede Plattform sind zusätzliche Einstellungen erforderlich.

Bevor Sie beginnen

Voraussetzungen

  • Installieren Sie Unity 5.3 oder höher.

  • (Nur iOS) Installieren Sie Folgendes:

    • Xcode 9.4.1 oder höher
    • CocoaPods 1.4.0 oder höher
  • Stellen Sie sicher, dass Ihr Unity-Projekt die folgenden Anforderungen erfüllt:

    • Für iOS - Ziel iOS 8 oder höher
    • Für Android - Ziel API Level 16 (Jelly Bean) oder höher
  • Richten Sie ein Gerät ein oder verwenden Sie einen Emulator, um Ihr Unity-Projekt auszuführen.

    • Für iOS - Richten Sie ein physisches iOS-Gerät zum Ausführen Ihrer App ein und führen Sie die folgenden Aufgaben aus:

      • Erhalten Sie einen Apple Push Notification-Authentifizierungsschlüssel für Ihr Apple Developer-Konto .
      • Aktivieren Sie Push Notifications in XCode unter App> Capabilities.
    • Für Android - Emulatoren müssen ein Emulatorbild mit Google Play verwenden.

Wenn Sie noch kein Unity-Projekt haben und nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstartbeispiele herunterladen.

Schritt 1: Erstellen Sie ein Firebase-Projekt

Bevor Sie Firebase zu Ihrem Unity-Projekt hinzufügen können, müssen Sie ein Firebase-Projekt erstellen, um eine Verbindung zu Ihrem Unity-Projekt herzustellen. Besuchen Sie Firebase-Projekte verstehen , um mehr über Firebase-Projekte zu erfahren.

Schritt 2: Registrieren Sie Ihre App bei Firebase

Sie können eine oder mehrere Apps oder Spiele registrieren, um eine Verbindung mit Ihrem Firebase-Projekt herzustellen.

  1. Gehen Sie zur Firebase-Konsole .

  2. Klicken Sie in der Mitte der auf das Unity- Symbol ( ), um den Setup-Workflow zu starten.

    Wenn Sie Ihrem Firebase-Projekt bereits eine App hinzugefügt haben, klicken Sie auf App hinzufügen, um die Plattformoptionen anzuzeigen.

  3. Wählen Sie aus, welches Build-Ziel Ihres Unity-Projekts Sie registrieren möchten, oder wählen Sie sogar aus, ob beide Ziele jetzt gleichzeitig registriert werden sollen.

  4. Geben Sie die plattformspezifischen IDs Ihres Unity-Projekts ein.

    • Für iOS - Geben Sie die iOS-ID Ihres Unity-Projekts in das Feld iOS-Bundle-ID ein.

    • Für Android - Geben Sie die Android-ID Ihres Unity-Projekts in das Feld Name des Android-Pakets ein.
      Die Begriffe Paketname und Anwendungs-ID werden häufig synonym verwendet.

  5. (Optional) Geben Sie die plattformspezifischen Spitznamen Ihres Unity-Projekts ein.
    Diese Spitznamen sind interne Bequemlichkeitskennungen und nur für Sie in der Firebase-Konsole sichtbar.

  6. Klicken Sie auf App registrieren .

Schritt 3: Fügen Sie Firebase-Konfigurationsdateien hinzu

  1. Beziehen Sie Ihre plattformspezifischen Firebase-Konfigurationsdateien im Setup-Workflow der Firebase-Konsole.

    • Für iOS - Klicken Sie auf GoogleService-Info.plist herunterladen .

    • Für Android - Klicken Sie auf Download google-services.json .

  2. Öffnen Sie das Projektfenster Ihres Unity-Projekts und verschieben Sie Ihre Konfigurationsdatei (en) in den Ordner " Assets ".

  3. Klicken Sie in der Firebase-Konsole im Setup-Workflow auf Weiter .

Schritt 4: Fügen Sie Firebase Unity SDKs hinzu

  1. Klicken Sie in der Firebase-Konsole auf Firebase Unity SDK herunterladen und entpacken Sie das SDK an einem geeigneten Ort.

    • Sie können das Firebase Unity SDK jederzeit erneut herunterladen.

    • Das Firebase Unity SDK ist nicht plattformspezifisch.

  2. Navigieren Sie in Ihrem geöffneten Unity-Projekt zu Assets > Paket importieren > Benutzerdefiniertes Paket .

  3. Wählen Sie im entpackten SDK die unterstützten Firebase-Produkte aus , die Sie in Ihrer App verwenden möchten.

    Für eine optimale Erfahrung mit Firebase Cloud Messaging empfehlen wir , Google Analytics in Ihrem Projekt zu aktivieren . Außerdem müssen Sie im Rahmen der Einrichtung von Analytics Ihrer App das Firebase-Paket für Analytics hinzufügen.

    Analytics aktiviert

    • Fügen Sie das Firebase-Paket für Google Analytics hinzu: FirebaseAnalytics.unitypackage
    • Fügen Sie das Paket für Firebase Cloud Messaging hinzu: FirebaseMessaging.unitypackage

    Analytics nicht aktiviert

    Fügen Sie das Paket für Firebase Cloud Messaging hinzu: FirebaseMessaging.unitypackage

  4. Klicken Sie im Fenster " Unity-Paket importieren" auf " Importieren" .

  5. Klicken Sie in der Firebase-Konsole im Setup-Workflow auf Weiter .

Schritt 5: Bestätigen Sie die Versionsanforderungen für die Google Play-Dienste

Für das Firebase Unity SDK für Android sind Google Play-Dienste erforderlich, die auf dem neuesten Stand sein müssen, bevor das SDK verwendet werden kann.

Fügen Sie zu Beginn Ihrer Anwendung den folgenden Code hinzu. Sie können nach Google Play-Diensten suchen und diese optional auf die vom Firebase Unity SDK erforderliche Version aktualisieren, bevor Sie andere Methoden im SDK aufrufen.

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
       app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

Ihr Unity-Projekt ist registriert und für die Verwendung von Firebase konfiguriert.

Schritt 7: Fügen Sie das Benutzerbenachrichtigungs-Framework hinzu

  1. Klicken Sie auf das Projekt in Xcode, wählen Sie dann die Registerkarte Allgemein aus dem Bereich Editor.

  2. Scrollen Sie nach unten zu Verknüpfte Frameworks und Bibliotheken und klicken Sie auf die Schaltfläche + , um ein Framework hinzuzufügen.

  3. Scrollen Sie im angezeigten Fenster zu UserNotifications.framework , klicken Sie auf diesen Eintrag und dann auf Hinzufügen .

Schritt 8: Aktivieren Sie Push-Benachrichtigungen

  1. Klicken Sie auf das Projekt in Xcode, wählen Sie dann die Registerkarte Funktionen aus dem Bereich Editor.

  2. Schalten Sie Push-Benachrichtigungen auf Ein .

  3. Scrollen Sie nach unten zu Hintergrundmodi und schalten Sie es dann auf Ein .

  4. Aktivieren Sie das Kontrollkästchen Remote-Benachrichtigungen unter Hintergrundmodi .

Initialisieren Sie Firebase Cloud Messaging

Die Firebase Cloud-Nachrichtenbibliothek wird initialisiert, wenn Handler für die Ereignisse TokenReceived oder MessageReceived TokenReceived werden.

Bei der Initialisierung wird ein Registrierungstoken für die Client-App-Instanz angefordert. Die App erhält das Token mit dem Ereignis OnTokenReceived , das zur späteren Verwendung zwischengespeichert werden sollte. Sie benötigen dieses Token, wenn Sie dieses bestimmte Gerät auf Nachrichten ausrichten möchten.

Darüber hinaus müssen Sie sich für das Ereignis OnMessageReceived registrieren, wenn Sie eingehende Nachrichten empfangen möchten.

Das gesamte Setup sieht folgendermaßen aus:

public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
  UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}

public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}

Konfigurieren einer Android-Einstiegspunktaktivität

Unter Android wird Firebase Cloud Messaging mit einer benutzerdefinierten Einstiegspunktaktivität UnityPlayerActivity , die die Standard- UnityPlayerActivity . Wenn Sie keinen benutzerdefinierten Einstiegspunkt verwenden, erfolgt diese Ersetzung automatisch und Sie sollten keine zusätzlichen Maßnahmen ergreifen müssen. Apps, die nicht die Standardeinstiegspunktaktivität verwenden oder ihre eigenen Assets/Plugins/AndroidManifest.xml , müssen zusätzlich konfiguriert werden.

Das Firebase Cloud Messaging Unity-Plugin für Android wird mit zwei zusätzlichen Dateien geliefert:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar enthält eine Aktivität namens MessagingUnityPlayerActivity , die die Standard- UnityPlayerActivity .
  • Assets/Plugins/Android/AndroidManifest.xml weist die App an, MessagingUnityPlayerActivity als Einstiegspunkt für die App zu verwenden.

Diese Dateien werden bereitgestellt, weil die Standard- UnityPlayerActivity keine onStop , onRestart Aktivitätslebenszyklusübergänge verarbeitet oder den onNewIntent implementiert, der onNewIntent ist, damit Firebase Cloud Messaging eingehende Nachrichten korrekt verarbeitet.

Konfigurieren einer benutzerdefinierten Einstiegspunktaktivität

Wenn Ihre App nicht die Standard- UnityPlayerActivity Sie die mitgelieferte AndroidManifest.xml entfernen und sicherstellen, dass Ihre benutzerdefinierte Aktivität alle Übergänge des Android- Aktivitätslebenszyklus ordnungsgemäß verarbeitet (ein Beispiel hierfür finden Sie unten). Wenn Ihre benutzerdefinierte Aktivität UnityPlayerActivity erweitert, UnityPlayerActivity Sie stattdessen com.google.firebase.MessagingUnityPlayerActivity wodurch alle erforderlichen Methoden implementiert werden.

Wenn Sie eine benutzerdefinierte Aktivität verwenden und com.google.firebase.MessagingUnityPlayerActivity nicht erweitern, sollten Sie die folgenden Snippets in Ihre Aktivität aufnehmen.

/**
 * Workaround for when a message is sent containing both a Data and Notification payload.
 *
 * When the app is in the background, if a message with both a data and notification payload is
 * received the data payload is stored on the Intent passed to onNewIntent. By default, that
 * intent does not get set as the Intent that started the app, so when the app comes back online
 * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so
 * that it sends the intent to the MessageForwardingService which forwards the message to the
 * FirebaseMessagingService which in turn sends the message to the application.
 */
@Override
protected void onNewIntent(Intent intent) {
  Intent message = new Intent(this, MessageForwardingService.class);
  message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
  message.putExtras(intent);
  message.setData(intent.getData());
  startService(message);
}

/**
 * Dispose of the mUnityPlayer when restarting the app.
 *
 * This ensures that when the app starts up again it does not start with stale data.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
  if (mUnityPlayer != null) {
    mUnityPlayer.quit();
    mUnityPlayer = null;
  }
  super.onCreate(savedInstanceState);
}

Hinweis zur Nachrichtenübermittlung unter Android

Wenn die App überhaupt nicht ausgeführt wird und ein Benutzer auf eine Benachrichtigung tippt, wird die Nachricht standardmäßig nicht über die in FCMs integrierten Rückrufe weitergeleitet. In diesem Fall werden Nachrichtennutzdaten über eine Intent empfangen, die zum Starten der Anwendung verwendet wird.

Nachrichten, die empfangen werden, während sich die App im Hintergrund befindet, enthalten den Inhalt ihres Benachrichtigungsfelds, das zum Auffüllen der Taskleistenbenachrichtigung verwendet wird. Dieser Benachrichtigungsinhalt wird jedoch nicht an FCM übermittelt. Das heißt, FirebaseMessage.Notification ist eine Null.

Zusammenfassend:

App-Status Benachrichtigung Daten Beide
Vordergrund Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
Hintergrund System Tray Firebase.Messaging.FirebaseMessaging.MessageReceived Benachrichtigung: Taskleiste
Daten: in Extras der Absicht.

Verhindern Sie die automatische Initialisierung

FCM generiert eine Instanz-ID, die als Registrierungstoken in FCM verwendet wird. Wenn eine Instanz-ID generiert wird, lädt die Bibliothek die Kennung und die Konfigurationsdaten in Firebase hoch. Wenn Sie vor der Verwendung der Instanz-ID eine explizite Anmeldung erhalten möchten, können Sie die Generierung zum Zeitpunkt der Konfiguration verhindern, indem Sie FCM (und unter Android Analytics) deaktivieren. . Info.plist Sie dazu Ihrer Info.plist (nicht Ihrer GoogleService-Info.plist ) unter iOS oder Ihrer AndroidManifest.xml unter Android einen Metadatenwert AndroidManifest.xml :

Android

<?xml version="1.0" encoding="utf-8"?>
<application>
  <meta-data android:name="firebase_messaging_auto_init_enabled"
             android:value="false" />
  <meta-data android:name="firebase_analytics_collection_enabled"
             android:value="false" />
</application>

iOS

FirebaseMessagingAutoInitEnabled = NO

Um FCM wieder zu aktivieren, können Sie einen Laufzeitaufruf ausführen:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

Dieser Wert bleibt auch nach dem Festlegen des App-Neustarts erhalten.

Mit FCM können Nachrichten gesendet werden, die einen Deep Link in Ihre App enthalten. Um Nachrichten zu empfangen, die einen Deep Link enthalten, müssen Sie der Aktivität, die Deep Links für Ihre App verarbeitet, einen neuen Absichtsfilter hinzufügen. Der Absichtsfilter sollte tiefe Links Ihrer Domain abfangen. Wenn Ihre Nachrichten keinen Deep Link enthalten, ist diese Konfiguration nicht erforderlich. In AndroidManifest.xml:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="http"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="https"/>
</intent-filter>

Es ist auch möglich, einen Platzhalter anzugeben, um den Absichtsfilter flexibler zu gestalten. Beispielsweise:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="*.example.com" android:scheme="http"/>
  <data android:host="*.example.com" android:scheme="https"/>
</intent-filter>

Wenn Benutzer auf eine Benachrichtigung tippen, die einen Link zu dem von Ihnen angegebenen Schema und Host enthält, startet Ihre App die Aktivität mit diesem Absichtsfilter, um den Link zu verarbeiten.

Nächste Schritte

Nach dem Einrichten der Client-App können Sie Downstream- und Themennachrichten mit Firebase senden. Weitere Informationen finden Sie im Schnellstartbeispiel, das diese Funktionalität demonstriert.

Informationen zum Hinzufügen anderer, erweiterter Verhaltensweisen zu Ihrer App finden Sie in den Handbüchern zum Senden von Nachrichten von einem App-Server:

Denken Sie daran , dass Sie einen benötigen Server - Implementierung dieser Funktionen zu nutzen.