Das Google Play Billing-Plug-in erweitert die integrierten Dienste und Assets von Unity für In-App-Käufe ( Unity IAP) um alle aktuellen Funktionen der Google Play Billing Library. In diesem Leitfaden wird beschrieben, wie Sie Ihr Projekt für die Verwendung des Plug-ins einrichten. Außerdem wird erläutert, wie Sie Funktionen der Google Play Billing Library in Ihrem Spiel in Unity implementieren.
Google Play Billing-Plug-in einrichten
Führen Sie die Schritte in den folgenden verlinkten Abschnitten aus, um das Plug-in einzurichten:
- Abstraktionsebene von Unity IAP aktivieren.
- Plug-in herunterladen und importieren.
- Build-Einstellungen des Plug-ins konfigurieren.
- Plug-in aktivieren.
Abstraktionsebene von Unity IAP aktivieren
Das Google Play Billing-Plug-in basiert auf einer Abstraktionsebene, die in Unity IAP enthalten ist. Sie müssen diese Abstraktionsebene aktivieren, bevor Sie das Plug-in herunterladen und importieren. So aktivieren Sie die Abstraktionsebene von Unity IAP:
- Führen Sie alle Schritte im folgenden Unity-Tutorial aus: Set up your project for Unity Services (Projekt für Unity-Dienste einrichten).
- Führen Sie alle Schritte im folgenden Unity-Tutorial aus: Enable the Unity IAP service (Unity IAP-Dienst aktivieren).
Plug-in herunterladen und importieren
Das Plug-in wird als Unity-Paket im Format .unitypackage ausgeliefert. So laden Sie das Plug-in herunter und importieren es:
- Laden Sie die aktuelle Version der Google Play-Plug-ins für Unity von der Releases-Seite des Repositorys auf GitHub herunter.
Klicken Sie in der Unity-Menüleiste auf Assets > Import Package > Custom Package (Assets > Paket importieren > Benutzerdefiniertes Paket).

Suchen Sie die Datei
.unitypackage, die Sie heruntergeladen haben, und wählen Sie sie aus.Lassen Sie im Dialogfeld Import Unity Package (Unity-Paket importieren) alle Assets ausgewählt und klicken Sie auf Import (Importieren).

Nach dem Importieren des Pakets wird den Assets Ihres Projekts ein neuer Ordner namens GooglePlayPlugins (im Stammverzeichnis des Ordners „Assets“) hinzugefügt. Dieser Ordner enthält alle Assets der Google Play Billing Library für das Plug-in.
Build-Einstellungen konfigurieren
Da das Plug-in Unity IAP erweitert, treten in Unity Konflikte auf und es kann keine Android-APK erstellt werden, wenn einige ältere, sich überschneidende Abhängigkeiten in Unity IAP nicht aus dem Build entfernt werden. Das Plug-in bietet eine automatische Möglichkeit, die in Konflikt stehenden Bibliotheken aus Ihrem Projekt zu entfernen. So beheben Sie diese Konflikte:
Wählen Sie in der Unity-Menüleiste Google > Play Billing > Build Settings (Google > Play Billing > Build-Einstellungen) aus.

Klicken Sie im Fenster „Play Billing Build Settings“ (Build-Einstellungen für Play Billing) auf Fix (Beheben). Dadurch wird der Konflikt behoben und die in Konflikt stehenden Unity IAP-Dateien werden in ein Sicherungsverzeichnis verschoben. Nachdem Sie auf Fix geklickt haben, ändert sich die Schaltfläche zu Restore. Wenn Sie darauf klicken, werden die ursprünglichen, in Konflikt stehenden Dateien wiederhergestellt.

Plug-in aktivieren
Um das Plug-in zu aktivieren, ersetzen Sie die Unity IAP-Implementierung von Google Play durch das Google Play Billing-Plug-in. Wenn Sie beispielsweise das Unity IAP Purchaser
Script verwenden,
ändern Sie das StandardPurchaseModule, das an den IAP-Builder übergeben wird,
so, dass Google.Play.Billing.GooglePlayStoreModule verwendet wird:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
Wenn Ihr Spiel dasselbe Purchaser Script für mehrere Plattformen verwendet, sollten Sie eine Plattformprüfung hinzufügen, damit Unity weiterhin seine eigene IAP-Lösung für andere Plattformen verwendet:
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 in anderen Android App-Shops als dem Google Play Store veröffentlichen, 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());
}
Funktionen der Google Play Billing Library in Ihrem Spiel implementieren
Das Google Play Billing-Plug-in erweitert die Unity IAP-Dienste, sodass Sie dieselben Unity APIs verwenden können, um gängige Kaufabläufe zu verwalten. Aufgrund von Unterschieden zwischen der Google Play Billing Library und der Standard-IAP Implementierung von Unity für andere App-Shops gibt es einige geringfügige Änderungen am API-Verhalten. Wenn Sie noch keine Erfahrung mit den Unity IAP APIs haben, finden Sie im Unity IAP Tutorial im Abschnitt „Making a Purchase Script“ (Kaufskript erstellen) ein Beispiel für die Implementierung grundlegender Kaufabläufe.
Die Google Play Billing Library enthält auch einige Funktionen, die nur im Google Play Store verfügbar sind. Sie können über eine erweiterte Schnittstelle auf diese Funktionen zugreifen. Im Rest dieses Abschnitts wird beschrieben, wie Sie diese einzigartigen Funktionen der Google Play Billing Library in Ihrem Spiel implementieren.
Verzögerte Käufe aktivieren
Google Play unterstützt verzögerte Käufe (auch ausstehende Transaktionen oder ausstehende Käufe genannt). Dabei können Nutzer einen Kauf erstellen und ihn später mit Bargeld in Geschäften abschließen.
Um verzögerte Käufe zu aktivieren, ändern Sie die Konfiguration Ihres Moduls mit dem IAP-Builder, indem Sie die Methode EnableDeferredPurchase() aufrufen:
// 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 einen Callback für verzögerte Käufe mit den Google Play Store-Erweiterungen:
// 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.
});
Verdeckte Konto-IDs an Google Play übergeben
Sie können verdeckte Nutzerkonto-IDs an Google Play übergeben, um die Missbrauchserkennung zu erleichtern. So lässt sich beispielsweise erkennen, ob viele Geräte in kurzer Zeit Käufe über dasselbe Konto tätigen.
Rufen Sie die Methode SetObfuscatedAccountId() über die Extensions API auf, um eine verdeckte Konto-ID zu übergeben:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);
Verdeckte Profil-IDs an Google Play übergeben
Sie können eine verdeckte Profil-ID an Google Play übergeben, um die Betrugserkennung zu erleichtern. So lässt sich beispielsweise erkennen, ob viele Geräte in kurzer Zeit Käufe über dasselbe Konto tätigen. Dies ähnelt der Übergabe einer verschleierten Nutzerkonto-ID. In beiden Fällen steht die ID für einen einzelnen Nutzer. Mit der Profil-ID können Sie einen einzelnen Nutzer jedoch eindeutig über mehrere Profile hinweg identifizieren, die er in einer einzelnen App hat. Nachdem Sie eine verdeckte Profil-ID an Google Play gesendet haben, können Sie sie später in einer Kaufbestätigung abrufen.
Um eine verdeckte Profil-ID zu übergeben, ändern Sie die Konfiguration Ihres Moduls mit dem IAP-Builder, indem Sie die Methode SetObfuscatedProfileId() aufrufen:
// 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
Mit Google Play können Sie den Preis eines aktiven Abos ändern. Die Nutzer Ihres Spiels müssen jede Preisänderung bestätigen, bevor sie in Kraft treten kann. Rufen Sie die Methode ConfirmSubscriptionPriceChange() auf, um Nutzer aufzufordern, eine Preisänderung für ihr Abo zu bestätigen:
// 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 Unity API-Verhalten
Wenn Sie das Google Play Billing-Plug-in verwenden, verhalten sich die meisten APIs genauso wie die Standard-IAP-Implementierung von Unity für andere App-Shops. Es gibt jedoch einige Fälle, in denen sich die APIs anders verhalten. In diesem Abschnitt werden diese Verhaltensunterschiede beschrieben.
Entwickler-Payload wird nicht unterstützt
Google Play hat die Entwickler-Payload eingestellt und ersetzt sie durch Alternativen, die aussagekräftiger und kontextbezogener sind. Aus diesem Grund wird die Entwickler-Payload nicht unterstützt. Weitere Informationen zu Alternativen finden Sie auf der Seite über Entwickler-Payload.
Sie können weiterhin dieselben Schnittstellen verwenden, die von der Standard-IAP-Implementierung von Unity für andere App-Shops definiert werden, einschließlich IStoreController. Wenn Sie einen Kauf initiieren, können Sie weiterhin IStoreController verwenden und die Methode InitiatePurchase() aufrufen:
public void InitiatePurchase(Purchasing.Product product, string payload);
Alle Payload, die Sie übergeben, wird jedoch nicht berücksichtigt (sie wird nicht in der endgültigen Bestätigung angezeigt).
SubscriptionManager wird nicht unterstützt
Unity IAP bietet die SubscriptionManager Klasse
zum Verwalten von Abos. Da die Standard-IAP-Implementierung von Unity für diese Klasse die Entwickler-Payload verwendet, wird diese Klasse nicht unterstützt. Sie können diese Klasse zwar erstellen, aber möglicherweise erhalten Sie unzuverlässige Daten, wenn Sie eine der Getter-Methoden der Klasse verwenden.
Geringfügige API-Änderungen bei UpdateSubscription
Das Google Play Billing-Plug-in unterstützt nicht die Verwendung der Methoden SubscriptionManager.UpdateSubscription() und SubscriptionManager.UpdateSubscriptionInGooglePlayStore(), um Ihre Abos zu aktualisieren. Wenn Ihr Spiel diese Methoden aufruft, wird eine GooglePlayStoreUnsupportedException ausgelöst.
Die Google Play Billing Library bietet eine alternative API, die anstelle dieser Methoden verwendet werden kann. Rufen Sie die Methode UpdateSubscription() im anteiligen Modus auf, um ein Abo zu aktualisieren:
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 umschließen, wenn GooglePlayStoreUnsupportedException abgefangen wird.
Weitere Informationen und Beispiele zur Verwendung des anteiligen Modus finden Sie unter Anteiligen Modus festlegen.