Google Play Billing Library mit Unity verwenden

Das Google Play Billing-Plug-in erweitert die integrierten Dienste und für In-App-Käufe, als Unity IAP, um mit den neuesten Funktionen der Google Play Billing Library. Dieses erfahren Sie, wie Sie Ihr Projekt für die Verwendung des Plug-ins einrichten. In diesem Leitfaden wird beschrieben, wie Sie Google Play Billing Library-Funktionen in Ihrem Spiel auf Unity implementieren.

Google Play Billing-Plug-in einrichten

Führen Sie zum Einrichten des Plug-ins die Schritte in den folgenden verknüpften Abschnitten aus:

  1. Aktivieren Sie die IAP-Abstraktionsebene von Unity.
  2. Laden Sie das Plug-in herunter und importieren Sie es.
  3. Konfigurieren Sie die Build-Einstellungen des Plug-ins.
  4. Aktivieren Sie das Plug-in.

IAP-Abstraktionsebene von Unity aktivieren

Das Google Play Billing-Plug-in basiert auf einer Abstraktionsebene, die Unity IAP, sodass Sie diese Abstraktionsebene vor dem Download aktivieren müssen und importieren Sie das Plug-in. Führen Sie die folgenden Schritte aus, um die IAP-Abstraktionsebene von Unity zu aktivieren: Folgendes:

  1. Führen Sie alle Schritte in der Unity-Anleitung aus: Projekt einrichten für Unity-Dienste.
  2. Führen Sie alle Schritte in der folgenden Unity-Anleitung aus: Unity IAP aktivieren

Plug-in herunterladen und importieren

Das Plug-in wird als Unity-Paket im .unitypackage-Format. So laden Sie das Plug-in herunter und importieren es:

  1. Laden Sie die neueste Version der Google Play-Plug-ins für Unity aus der Release-Seite auf GitHub (in englischer Sprache).
  2. Klicken Sie in der Unity-Menüleiste auf Assets > Paket importieren > Benutzerdefiniertes Paket.

  3. Suchen Sie den Speicherort, an dem Sie die Datei .unitypackage heruntergeladen haben, und wählen Sie sie aus.

  4. Lassen Sie im Dialogfeld Import Unity Package (Unity-Paket importieren) alle Assets ausgewählt und klicken Sie auf Importieren:

Nach dem Paketimport wird ein neuer Ordner mit dem Namen GooglePlayPlugins (im Stamm des Ordners „Assets“) wird den Assets Ihres Projekts hinzugefügt. Dieser Ordner alle Google Play Billing Library-Assets für das Plug-in enthält.

Build-Einstellungen konfigurieren

Da das Plug-in Unity IAP erweitert, treten bei Unity Konflikte auf und Erstellen eines Android-APKs, es sei denn, es gibt ältere, sich überschneidende Abhängigkeiten in Unity IAP werden aus dem Build entfernt. Das Plug-in bietet eine automatische Möglichkeit, in Konflikt stehende Bibliotheken aus Ihrem Projekt zu importieren. Um diese Konflikte zu lösen, diese Schritte:

  1. Wählen Sie in der Unity-Menüleiste Google > Play Billing > Build-Einstellungen.

  2. Klicken Sie im Fenster mit den Build-Einstellungen für Play Billing auf Korrigieren. Dadurch wird das Problem und verschiebt die in Konflikt stehenden IAP-Dateien in ein Sicherungsverzeichnis. Nachher Klicken Sie auf Korrigieren, ändert sich die Schaltfläche in Wiederherstellen. die ursprünglichen, in Konflikt stehenden Dateien wiederherstellen.

Plug-in aktivieren

Um das Plug-in zu aktivieren, ersetzen Sie die Implementierung von Google Play durch Unity IAP durch den Google Play Billing-Plug-in Wenn Sie beispielsweise den Unity IAP-Käufer Skript, ändern Sie den StandardPurchaseModule, der an den IAP-Builder übergeben wird. um Google.Play.Billing.GooglePlayStoreModule zu verwenden:

// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());

Wenn in deinem Spiel dasselbe Käuferskript für mehrere Plattformen verwendet wird, sollte eine Plattformprüfung hinzugefügt werden, damit Unity eigene In-App-Lösung für andere Plattformen:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

Wenn Sie Ihr Spiel nicht nur im Google Play Store, sondern auch in anderen Android App-Shops veröffentlichen Speichern, dann sollten Sie die Standard-Unity-IAP-Implementierung nur ersetzen, wenn Sie den Google Play Store auswählen:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
       && SelectedAndoidAppStore == AppStore.GooglePlay)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

Google Play Billing Library-Funktionen in deinem Spiel implementieren

Das Google Play Billing-Plug-in erweitert die In-App-Dienste von Unity, sodass Sie den Dienst Unity APIs verwenden, um gängige Kaufabläufe zu verwalten. Beachten Sie, dass es geringfügige Änderungen am API-Verhalten aufgrund von Unterschieden zwischen der Google Play Billing Library und dem standardmäßigen In-App-Kauf von Unity andere App-Shops implementieren. Wenn Sie die Unity IAP APIs zum ersten Mal verwenden, lesen Sie den Abschnitt das Skript zum Kaufabschluss. im Abschnitt Unity IAP Anleitung finden Sie ein Beispiel für die Implementierung grundlegender Kaufabläufe.

Die Google Play Billing Library umfasst auch einige Funktionen, die nur bei Google Play Store. Der Zugriff auf diese Funktionen erfolgt über eine erweiterte Benutzeroberfläche. Die Im Rest dieses Abschnitts wird beschrieben, wie Sie diese eindeutigen Google Play Billing Library implementieren. Funktionen in deinem Spiel.

Ausgesetzte Käufe aktivieren

Google Play unterstützt verzögerte Käufe – auch als ausstehende Käufe bezeichnet – oder noch ausstehend. Käufe tätigen, bei denen Nutzer einen Kauf abschließen und später bar bezahlen können Geschäften.

Um verzögerte Käufe zu aktivieren, ändern Sie mit Ihrem IAP-Builder durch Aufrufen der Methode EnableDeferredPurchase():

// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
    .EnableDeferredPurchase();

Implementieren Sie als Nächstes mithilfe der Play Store-Erweiterungen einen Callback für verzögerte Käufe:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
    delegate(Product product)
    {
        // Do not grant the item here. Instead, record the purchase and remind
        // the user to complete the transaction in the Play Store.
    });

Verschleierte Konto-IDs an Google Play übergeben

Sie können verschleierte Nutzerkonto-IDs an Google Play übergeben, um Missbrauch zu ermöglichen. Erkennung, z. B. ob viele Geräte auf demselben Gerät etwas kaufen innerhalb kurzer Zeit Ihr Konto aktiviert haben.

Rufe die SetObfuscatedAccountId()-Methode auf, um eine verschleierte Konto-ID zu übergeben. aus der Extensions API:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);

Verschleierte Profil-IDs an Google Play übergeben

Du kannst eine verschleierte Profil-ID an Google Play senden, um Betrug zu ermöglichen Erkennung, z. B. ob viele Geräte auf demselben Gerät etwas kaufen innerhalb kurzer Zeit Ihr Konto aktiviert haben. Dies ähnelt der Weitergabe einer verschleierten Nutzerkonto-ID In beiden Fällen repräsentiert die ID eine einzelner Nutzer. Mithilfe der Profil-ID können Sie einen einzelnen Nutzer jedoch mehrere Profile innerhalb einer einzelnen App haben. Nachdem Sie eine mit Google Play verschleiert haben, können Sie diese ID später in einem Kaufbeleg.

Verwende zur Übergabe einer verschleierten Profil-ID deine IAP-Builder können Sie die Konfiguration Ihres Moduls ändern, indem Sie die Methode SetObfuscatedProfileId()-Methode:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);

Preisänderungen für Abos bestätigen

Bei Google Play können Sie den Preis einer aktiven Abo. Ihr müssen die Nutzer des Spiels Preisänderungen bestätigen, bevor die Änderung wirksam wird. Bis Nutzer auffordern, eine Preisänderung für ihr Abo zu bestätigen, die ConfirmSubscriptionPriceChange()-Methode:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
    delegate (bool success)
    {
        // Returns whether the user has accepted the new price or not.
    });

Änderungen am Verhalten der Unity API

Wenn Sie das Google Play Billing-Plug-in verwenden, verhalten sich die meisten APIs wie folgt: wie bei der standardmäßigen In-App-Implementierung von Unity für andere App-Shops. Sie können jedoch gibt es Fälle, in denen sich die APIs anders verhalten. Dieser Abschnitt beschreibt diese Verhaltensunterschiede.

Entwicklernutzlast wird nicht unterstützt

Google Play hat die Entwicklernutzlast eingestellt und durch Alternativen ersetzt aussagekräftiger und kontextbezogener sind. Aus diesem Grund ist die Entwicklernutzlast nicht unterstützt. Weitere Informationen zu Alternativen finden Sie auf der Seite über Entwicklernutzlast.

Sie können weiterhin dieselben Schnittstellen verwenden, die im Unity-Standard definiert sind. IAP-Implementierung für andere App-Shops, einschließlich IStoreController Wenn Sie einen Kauf getätigt haben, können Sie weiterhin IStoreController verwenden und die InitiatePurchase()-Methode:

public void InitiatePurchase(Purchasing.Product product, string payload);

Die übergebene Nutzlast wird jedoch nicht wirksam (erscheint nicht im Quittung.

SubscriptionManager wird nicht unterstützt.

Unity IAP stellt die SubscriptionManager bereit zum Verwalten von Abos. Da die standardmäßige IAP-Implementierung Diese Klasse verwendet Entwicklernutzlast. Diese Klasse wird nicht unterstützt. Sie können immer noch erstellen. Sie erhalten jedoch möglicherweise unzuverlässige Daten, wenn Sie eine der Getter-Methoden der Klasse verwendet.

Bei UpdateSubscription wurden kleinere Änderungen an der API vorgenommen

Das Google Play Billing-Plug-in unterstützt nicht die Verwendung des SubscriptionManager.UpdateSubscription() und SubscriptionManager.UpdateSubscriptionInGooglePlayStore() Umstellungsmethoden und ein Downgrade Ihrer Abos durchführen. Wenn in deinem Spiel diese Methoden aufgerufen werden, GooglePlayStoreUnsupportedException wird geworfen.

Die Google Play Billing Library bietet eine alternative API, die du anstelle dieser . Rufen Sie für ein Upgrade oder Downgrade eines Abos die UpdateSubscription() auf. mithilfe des Zuteilungsmodus an:

void UpdateSubscription(Product oldProduct, Product newProduct,
           GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);

Sie können diesen Methodenaufruf entweder mit einer Plattformprüfung oder in einem Catch-Block zusammenfassen. wenn GooglePlayStoreUnsupportedException erkannt wird.

Weitere Informationen und Beispiele zur Verwendung des Zuteilungsmodus finden Sie unter Festlegen von Zuteilungsmodus auswählen.