Freigeben über


Java-Schnellstart für Native und Android Studio

In dieser Schnellstartanleitung können Sie das PlayFab JavaSDK und das einfache Java-Programm verwenden.

Bevor Sie eine PlayFab-API aufrufen können, müssen Sie über ein PlayFab-Entwicklerkonto verfügen.

In diesem Tutorial werden folgende Ziele verfolgt:

Abrufen der erforderlichen JAR-Dateien

Um das PlayFab JavaSDK nutzen zu können, benötigen wir den PlayFab-Client JavaSDK und seine Abhängigkeit, die Google GSON.

Laden Sie die JavaSDK-JAR-Bibliothek des PlayFab-Clients hier herunter. Suchen Sie nach client-sdk-*.jar und dem entsprechenden Java-Dokument [Optional, aber nützlich].

Sie können das neueste Google GSON hier herunterladen. Suchen Sie nach gson-*.jar.

Projekteinrichtung mit Intellij Idea

Nachdem Sie ein einfaches Intellij Idea Java-Projekt initialisiert haben, stellen Sie sicher, dass Sie die erforderlichen JAR-Dateien wie im folgenden Beispiel gezeigt platzieren.

Intellij – Projekteinrichtung

Der nächste Schritt ist das Hinzufügen von JAR-Dateien zum Klassenpfad. Navigieren Sie zu Datei ->, wie im folgenden Beispiel gezeigt.

Intellij: Hinzufügen von JAR-Dateien zum Klassenpfad

Navigieren Sie zu Bibliotheken, und fügen Sie eine neue Java-Bibliothek hinzu, wie in der folgenden Abbildung dargestellt.

Intellij: Hinzufügen einer neuen Java-Bibliothek

Wählen Sie die JAR-Dateien aus, die Sie dem Ordner libs hinzugefügt haben, und klicken Sie dann wie unten gezeigt auf OK .

Intellij – AUSWÄHLEN VON JAR-Dateien

Wenn Sie nach dem Modul gefragt werden, wählen Sie das erste Modul in der Liste aus. Stellen Sie sicher, dass alle JAR-Dateien der Bibliotheksliste hinzugefügt wurden.

Intellij: Sicherstellen, dass JAR-Dateien hinzugefügt wurden

Projekteinrichtung mit einer beliebigen IDE

Die Standard Anforderung besteht darin, jar-Dateien zum Klassenpfad hinzuzufügen. Informationen zum Hinzufügen von JAR-Dateien zum Klassenpfad finden Sie im Leitfaden für Ihre IDE.

Einrichten Ihres ersten API-Aufrufs

Verwenden Sie den unten gezeigten Code als Standard Klassencode.

import java.util.concurrent.*;
import java.util.*;

import com.playfab.PlayFabErrors.*;
import com.playfab.PlayFabSettings;
import com.playfab.PlayFabClientModels;
import com.playfab.PlayFabClientAPI;

public class Main
{
    private static boolean _running = true;

    public static void main(String[] args) {
        PlayFabSettings.TitleId = "144";

        PlayFabClientModels.LoginWithCustomIDRequest request = new PlayFabClientModels.LoginWithCustomIDRequest();
        request.CustomId = "GettingStartedGuide";
        request.CreateAccount = true;

        FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask = PlayFabClientAPI.LoginWithCustomIDAsync(request);
        loginTask.run();

        while (_running) {
            if (loginTask.isDone()) { // You would probably want a more sophisticated way of tracking pending async API calls in a real game
                OnLoginComplete(loginTask);
            }

            // Presumably this would be your main game loop, doing other things
            try {
                Thread.sleep(1);
            } catch(Exception e) {
                System.out.println("Critical error in the example main loop: " + e);
            }
        }
    }

    private static void OnLoginComplete(FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask) {
        PlayFabResult<com.playfab.PlayFabClientModels.LoginResult> result = null;
        try {
            result = loginTask.get(); // Wait for the result from the async call
        } catch(Exception e) {
            System.out.println("Exception in PlayFab api call: " + e); // Did you assign your PlayFabSettings.TitleId correctly?
        }

        if (result != null && result.Result != null) {
            System.out.println("Congratulations, you made your first successful API call!");
        } else if (result != null && result.Error != null) {
            System.out.println("Something went wrong with your first API call.");
            System.out.println("Here's some debug information:");
            System.out.println(CompileErrorsFromResult(result));
        }

        _running = false; // Because this is just an example, successful login triggers the end of the program
    }

    // This is a utility function we haven't put into the core SDK yet. Feel free to use it.
    private static <RT> String CompileErrorsFromResult(PlayFabResult<RT> result) {
        if (result == null || result.Error == null)
            return null;

        String errorMessage = "";
        if (result.Error.errorMessage != null)
            errorMessage += result.Error.errorMessage;
        if (result.Error.errorDetails != null)
            for (Map.Entry<String, List<String>> pair : result.Error.errorDetails.entrySet() )
                for (String msg : pair.getValue())
                    errorMessage += "\n" + pair.getKey() + ": " + msg;
        return errorMessage;
    }
}

Fertig stellen und ausführen

So führen Sie die Anwendung aus:

  1. Wählen Sie den Wiedergabepfeil > in der oberen rechten Ecke aus. Dadurch wird die Programmausführung gestartet, und der Ausgabebereich wird angezeigt.
  2. Suchen Sie die Debugmeldung. Dies gibt an, dass der API-Aufruf erfolgreich war.

Intellij – Programm ausführen

An diesem Punkt können Sie damit beginnen, andere API-Aufrufe auszuführen und Ihr Spiel zu erstellen.

Eine Liste aller verfügbaren Client-API-Aufrufe finden Sie in unserer Dokumentation zu PlayFab-API-Referenzen .

Dekonstruieren des Codes

In diesem optionalen letzten Abschnitt wird jede Zeile GettingStarted.java ausführlich beschrieben.

  • Einfuhren

    • Dies ist der minimale Satz von Importen, die für PlayFab-API-Aufrufe verwendet werden.
  • public static void main(String[] args) {

    • Nur eine einfache Schleife, die einen API-Aufruf startet und wartet, bis er abgeschlossen ist.

    • PlayFabSettings.TitleId = "xxxx";

      • Jeder PlayFab-Entwickler erstellt einen Titel in Game Manager. Wenn Sie Ihr Spiel veröffentlichen, müssen Sie diese titleId in Ihr Spiel codieren. Dadurch kann der Client wissen, wie auf die richtigen Daten in PlayFab zugegriffen werden kann. Für die meisten Benutzer ist es nur ein obligatorischer Schritt, der PlayFab funktioniert.
    • PlayFabClientModels.LoginWithCustomIDRequest request = new PlayFabClientModels.LoginWithCustomIDRequest();

      • Die meisten PlayFab-API-Methoden erfordern Eingabeparameter, und diese Eingabeparameter werden in ein Anforderungsobjekt gepackt.

      • Jede API-Methode erfordert ein eindeutiges Anforderungsobjekt mit einer Mischung aus optionalen und obligatorischen Parametern.

        • Für LoginWithCustomIDRequestgibt es einen obligatorischen Parameter von , der CustomIdeinen Spieler eindeutig identifiziert, und CreateAccount, der die Erstellung eines neuen Kontos mit diesem Aufruf ermöglicht.
      • Für die Anmeldung sollten die meisten Entwickler eine geeignetere Anmeldemethode verwenden.

        • Eine Liste aller Anmeldemethoden und Eingabeparameter finden Sie in der Dokumentation zur PlayFab-Anmeldung. Häufig sind folgende Optionen verfügbar:
          • LoginWithAndroidDeviceID
          • LoginWithIOSDeviceID
          • LoginWithEmailAddress
    • FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask = PlayFabClientAPI.LoginWithCustomIDAsync(request);

      • Dadurch wird die asynchrone Anforderung an mithilfe LoginWithCustomIDdes Java FutureTask-Frameworks gestartet.
    • Während (ausführung) { if (loginTask.isDone()) { OnLoginComplete(loginTask); } }

      • Führen Sie eine triviale Standard-Schleife aus, und warten Sie asynchron, bis loginTask abgeschlossen ist.
      • Rufen Sie nach Abschluss des Vorgangs auf OnLoginComplete.
  • OnLoginComplete (loginTask)

    • result = loginTask.get();

      • Rufen Sie das asynchrone Ergebnis ab (dies führt nicht zu einem Block, da wir bestätigt haben, dass futureTask bereits abgeschlossen ist.
    • wenn (result.Result != null), war der API-Aufruf erfolgreich.

      • Bei erfolgreicher Ausführung enthält das result.Result Objekt vieler API-Rückrufe die angeforderten Informationen.

      • LoginResult enthält einige grundlegende Informationen über den Spieler. Für die meisten Benutzer ist die Anmeldung jedoch nur ein obligatorischer Schritt, bevor andere APIs aufgerufen werden.

    • Wenn (result.Error != null) ist, ist der API-Aufruf fehlgeschlagen.

      • API-Aufrufe können aus vielen Gründen fehlschlagen, und Sie sollten immer versuchen, Fehler zu behandeln.
      • Warum API-Aufrufe fehlschlagen (In der Reihenfolge der Wahrscheinlichkeit)
        • PlayFabSettings.TitleId ist nicht festgelegt. Wenn Sie vergessen, auf Ihren Titel festzulegen TitleId , funktioniert nichts.
        • Anforderungsparameter. Wenn Sie nicht die richtigen oder erforderlichen Informationen für einen bestimmten API-Aufruf angegeben haben, tritt ein Fehler auf. Weitere Informationen finden Sie unter error.errorMessage, error.errorDetailsoder error.GenerateErrorReport() .
        • Gerätekonnektivitätsproblem. Mobiltelefone verlieren ständig die Konnektivität oder erhalten sie wieder, sodass jeder API-Aufruf jederzeit nach dem Zufallsprinzip fehlschlagen kann und dann sofort danach funktioniert. Wenn Sie in einen Tunnel gehen, können Sie vollständig getrennt werden.
        • PlayFab-Serverproblem. Wie bei der gesamten Software kann es Probleme geben. Informationen zu Updates finden Sie in unseren Versionshinweisen .
        • Das Internet ist nicht 100% zuverlässig. Manchmal ist die Nachricht beschädigt oder kann den PlayFab-Server nicht erreichen.
    • Wenn Sie Probleme beim Debuggen eines Problems haben und die Informationen in den Fehlerinformationen nicht ausreichen, besuchen Sie uns bitte in unseren Foren.