Das Google Play Billing-Plug-in erweitert die integrierten Dienste und Assets von Unity für In-App-Käufe, die sogenannte Unity IAP, um Ihrem Spiel alle aktuellen Funktionen der Google Play Billing Library zur Verfügung zu stellen. In dieser Anleitung wird beschrieben, wie Sie Ihr Projekt für die Verwendung des Plug-ins einrichten. Außerdem wird beschrieben, wie Sie die Funktionen der Google Play Billing Library in Ihrem Spiel in Unity implementieren.
Google Play Billing-Plug-in einrichten
Führen Sie zum Einrichten des Plug-ins die Schritte in den folgenden verlinkten Abschnitten aus:
- Aktivieren Sie die Unity-IAP-Abstraktionsschicht.
- Laden Sie das Plug-in herunter und importieren Sie es.
- Konfigurieren Sie die Build-Einstellungen des Plug-ins.
- Aktivieren Sie das Plug-in.
Abstraktionsebene für Unity-IAP aktivieren
Das Google Play Billing-Plug-in basiert auf einer Abstraktionsschicht, die in Unity IAP enthalten ist. Sie müssen diese Abstraktionsschicht aktivieren, bevor Sie das Plug-in herunterladen und importieren können. So aktivieren Sie die Unity IAP-Abstraktionsschicht:
- Führen Sie alle Schritte in der folgenden Unity-Anleitung aus: Projekt für Unity-Dienste einrichten.
- Führen Sie alle Schritte in der folgenden Unity-Anleitung aus: Unity IAP-Dienst aktivieren.
Plug-in herunterladen und importieren
Das Plug-in wird als Unity-Paket im .unitypackage
-Format bereitgestellt. So laden Sie das Plug-in herunter und importieren es:
- Laden Sie die neueste Version der Google Play-Plug-ins für Unity von der Release-Seite des Repositorys auf GitHub herunter.
Klicken Sie in der Unity-Menüleiste auf Assets > Import Package > Custom Package.
Suchen Sie den Speicherort der heruntergeladenen
.unitypackage
-Datei und wählen Sie sie aus.Lassen Sie im Dialogfeld Import Unity Package alle Assets ausgewählt und klicken Sie auf Importieren.
Nach dem Import des Pakets wird den Assets Ihres Projekts im Stammverzeichnis des Assets-Ordners ein neuer Ordner namens GooglePlayPlugins hinzugefügt. Dieser Ordner enthält alle Google Play Billing Library-Assets für das Plug-in.
Build-Einstellungen konfigurieren
Da das Plug-in Unity IAP erweitert, kommt es in Unity zu Konflikten und es kann kein Android-APK erstellt werden, es sei denn, einige ältere, sich überschneidende Abhängigkeiten in Unity IAP werden aus dem Build entfernt. 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-Abrechnung > Build-Einstellungen aus.
Klicken Sie im Fenster „Build-Einstellungen für die Play-Abrechnung“ auf Korrigieren. Dadurch wird der Konflikt behoben und die in Konflikt stehenden Unity-IAP-Dateien in ein Sicherungsverzeichnis verschoben. Nachdem Sie auf Korrigieren geklickt haben, ändert sich die Schaltfläche in Wiederherstellen. Klicken Sie darauf, um die ursprünglichen, in Konflikt stehenden Dateien wiederherzustellen.
Plug-in aktivieren
Um das Plug-in zu aktivieren, ersetzen Sie die Google Play-Implementierung von Unity IAP durch das Google Play Billing-Plug-in. Wenn Sie beispielsweise das Unity IAP Purchaser Script verwenden, ändern Sie die StandardPurchaseModule
, die an den IAP-Builder übergeben wird, so, dass die Google.Play.Billing.GooglePlayStoreModule
verwendet wird:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
Wenn in Ihrem Spiel dasselbe Käuferskript für mehrere Plattformen verwendet wird, 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 neben dem Google Play Store auch in anderen Android-App-Shops veröffentlichen, sollten Sie die Standardimplementierung von Unity-In-App-Transaktionen 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 Ihrem Spiel implementieren
Das Google Play Billing-Plug-in erweitert die Unity-IAP-Dienste, sodass Sie dieselben Unity APIs zum Verwalten gängiger Kaufabläufe verwenden können. Aufgrund von Unterschieden zwischen der Google Play Billing Library und der standardmäßigen IAP-Implementierung von Unity für andere App-Shops gibt es einige geringe Änderungen am API-Verhalten. Wenn Sie mit den Unity IAP APIs noch nicht vertraut sind, finden Sie im Abschnitt „Ein Kaufskript erstellen“ des Unity IAP-Tutorials ein Beispiel für die Implementierung grundlegender Kaufabläufe.
Die Google Play Billing Library enthält auch einige Funktionen, die nur für den Google Play Store verfügbar sind. Sie können über eine erweiterte Benutzeroberfläche auf diese Funktionen zugreifen. Im restlichen Teil dieses Abschnitts wird beschrieben, wie Sie diese einzigartigen Funktionen der Google Play Billing Library in Ihrem Spiel implementieren.
Verschobene Käufe aktivieren
Google Play unterstützt aufgeschobene Käufe, auch ausstehende Transaktionen oder ausstehende Käufe genannt. Nutzer können einen Kauf erstellen und später in Geschäften bar abschließen.
Wenn Sie verzögerte Käufe aktivieren möchten, ändern Sie mit Ihrem IAP-Builder die Konfiguration Ihres Moduls, 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 Rückruf für verzögerte Käufe mithilfe der 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.
});
Verschleierte Konto-IDs an Google Play übergeben
Sie können verschleierte Nutzerkonto-IDs an Google Play weitergeben, um Missbrauch zu erkennen, z. B. wenn viele Geräte in kurzer Zeit Käufe über dasselbe Konto abschließen.
Wenn Sie eine verschleierte Konto-ID übergeben möchten, rufen Sie die Methode SetObfuscatedAccountId()
über die Extensions API auf:
// 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
Sie können Google Play eine verschleierte Profil-ID übergeben, um Betrug zu erkennen, z. B. wenn viele Geräte in kurzer Zeit Käufe über dasselbe Konto abschließen. Das ist vergleichbar mit 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 jedoch einen einzelnen Nutzer in mehreren Profilen innerhalb einer einzelnen App eindeutig identifizieren. Nachdem Sie eine verschleierte Profil-ID an Google Play gesendet haben, können Sie diese ID später in einem Kaufbeleg abrufen.
Wenn Sie eine verschleierte Profil-ID übergeben möchten, ändern Sie mit Ihrem IAP-Builder die Konfiguration Ihres Moduls, 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
Bei Google Play können Sie den Preis eines aktiven Abos ändern. Die Nutzer Ihres Spiels müssen jede Preisänderung bestätigen, bevor sie wirksam wird. Wenn du Nutzer auffordern möchtest, eine Preisänderung für ihr Abo zu bestätigen, rufe die Methode ConfirmSubscriptionPriceChange()
auf:
// 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 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.
Entwicklernutzlast wird nicht unterstützt
Google Play hat die Entwicklernutzlast eingestellt und ersetzt sie durch Alternativen, die aussagekräftiger und kontextbezogener sind. Aus diesem Grund wird die Entwicklernutzlast nicht unterstützt. Weitere Informationen zu Alternativen finden Sie auf der Seite Entwicklernutzlast.
Sie können weiterhin dieselben Oberflächen verwenden, die von der standardmäßigen IAP-Implementierung von Unity für andere App-Shops wie IStoreController
definiert werden. Wenn du einen Kauf initiierst, kannst du weiterhin IStoreController
verwenden und die Methode InitiatePurchase()
aufrufen:
public void InitiatePurchase(Purchasing.Product product, string payload);
Alle von dir übergebenen Nutzlasten werden jedoch nicht übernommen und erscheinen nicht im endgültigen Beleg.
SubscriptionManager wird nicht unterstützt
Unity IAP bietet die Klasse SubscriptionManager
zum Verwalten von Abos. Da die Standard-IAP-Implementierung dieser Klasse in Unity die Entwicklernutzlast verwendet, wird diese Klasse nicht unterstützt. Sie können diese Klasse trotzdem erstellen, aber wenn Sie eine der Getter-Methoden der Klasse verwenden, erhalten Sie möglicherweise fehlerhafte Daten.
Kleine API-Änderungen bei UpdateSubscription
Das Google Play Billing-Plug-in unterstützt nicht die Verwendung der Methoden SubscriptionManager.UpdateSubscription()
und SubscriptionManager.UpdateSubscriptionInGooglePlayStore()
zum Upgraden und Downgraden von Abos. Wenn Ihr Spiel diese Methoden aufruft, wird eine GooglePlayStoreUnsupportedException
geworfen.
Die Google Play Billing Library bietet eine alternative API, die anstelle dieser Methoden verwendet werden kann. Wenn du ein Abo upgraden oder downgraden möchtest, ruf die Methode UpdateSubscription()
mit dem Modus zur Aufteilung der Kosten auf:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
Sie können diesen Methodenaufruf entweder in eine Plattformprüfung oder in einen Catch-Block einschließen, wenn GooglePlayStoreUnsupportedException
abgefangen wird.
Weitere Informationen und Beispiele zur Verwendung des Modus zur Aufteilung finden Sie unter Modus zur Aufteilung festlegen.