Dieses Dokument enthält Versionshinweise zur Google Play Billing Library.
Google Play Billing Library 8.1.0 (06.11.2025)
Version 8.1.0 der Google Play Billing Library und der Kotlin-Erweiterungen ist jetzt verfügbar.
Zusammenfassung der Änderungen
Gesperrte Abos
Der Methode
BillingClient.queryPurchasesAsync()wurde ein neuer Parameter hinzugefügt, um bei der Abfrage von Abos auch gesperrte Abos einzubeziehen. Gesperrte Abos werden dem Nutzer weiterhin zugeordnet, sind aber nicht aktiv, weil der Nutzer das Abo pausiert hat oder die Zahlungsmethode für die Verlängerung abgelehnt wurde.Das im Listener zurückgegebene
Purchase-Objekt gibtisSuspended() = truefür alle pausierten Abos zurück. In diesem Fall solltest du keinen Zugriff auf das gekaufte Abo gewähren und den Nutzer stattdessen zum Abo-Center weiterleiten, wo er seine Zahlungsmethoden verwalten oder den Pausierungsstatus ändern kann, um sein Abo zu reaktivieren.Änderungen bei Abos:
Das
BillingFlowParams.ProductDetailsParams-Objekt hat jetzt die MethodesetSubscriptionProductReplacementParams(), mit der Sie Ersetzungsinformationen auf Produktebene angeben können.Das
SubscriptionProductReplacementParams-Objekt hat zwei Setter-Methoden:setOldProductId: Das alte Produkt, das durch das Produkt im aktuellenProductDetailsersetzt werden muss.setReplacementMode: Dies ist der Ersatzmodus auf Artikelebene. Die Modi sind im Wesentlichen dieselben wie SubscriptionUpdateParams, aber die Wertzuordnung wurde aktualisiert. Es wird ein neuer ErsatzmodusKEEP_EXISTINGeingeführt, mit dem Sie den vorhandenen Zahlungsplan für einen Artikel unverändert beibehalten können.
SubscriptionUpdateParams setSubscriptionReplacementMode wird eingestellt. Verwenden Sie stattdessen
SubscriptionProductReplacementParams.setReplacementMode.
minSdkVersionauf 23 aktualisiert.Vorbestellungs-APIs für Einmalkaufprodukte aktiviert
Die
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API, mit der die Vorbestelldetails abgerufen werden, kann jetzt verwendet werden.Die Google Play Billing Library unterstützt jetzt Kotlin-Version 2.2.0.
Google Play Billing Library 8.0.0 (30.06.2025)
Version 8.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
In‑App-Artikel werden jetzt als Einmalkaufprodukte bezeichnet.
Mehrere Kaufoptionen und Angebote für Einmalkaufprodukte.
Sie können jetzt mehrere Kaufoptionen und Angebote für Ihre Einmalkaufprodukte haben. So können Sie Ihre Produkte flexibler verkaufen und einfacher verwalten.
Die Methode
queryProductDetailsAsync()wurde verbessert.Vor PBL 8.0.0 wurden mit der Methode
queryProductDetailsAsync()keine Produkte zurückgegeben, die nicht abgerufen werden konnten. Das kann daran liegen, dass das Produkt nicht gefunden wurde oder keine Angebote für den Nutzer verfügbar sind. Mit PBL 8.0.0 werden nicht abgerufene Produkte mit einem neuen Statuscode auf Produktebene zurückgegeben, der Informationen zu nicht abgerufenen Produkten enthält. Die Signatur vonProductDetailsResponseListener.onProductDetailsResponse()hat sich geändert. Das erfordert Änderungen in Ihrer App. Weitere Informationen finden Sie unter Ergebnis verarbeiten.Automatische Wiederverbindung mit dem Dienst.
Mit dem neuen Builder-Parameter
BillingClient.Builder.enableAutoServiceReconnection()können Entwickler die automatische Wiederverbindung mit dem Dienst aktivieren. Dadurch wird die Verbindungsverwaltung vereinfacht, da Wiederverbindungen mit dem Play-Abrechnungsdienst automatisch erfolgen. Außerdem ist es nicht mehr erforderlich,startConnection()manuell aufzurufen, wenn die Verbindung zum Dienst getrennt wird. Weitere Informationen finden Sie unter Verbindung automatisch wiederherstellen.Untergeordnete Antwortcodes für die Methode
launchBillingFlow().Das von
launchBillingFlow()zurückgegebene BillingResult enthält jetzt ein Unterantwortcodefeld. Dieses Feld wird nur in einigen Fällen ausgefüllt, um einen genaueren Grund für den Fehler anzugeben. Mit PBL 8.0.0 wird der Untercode PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS zurückgegeben, wenn das Guthaben des Nutzers geringer ist als der Preis des Artikels, den er kaufen möchte.Die Methode
queryPurchaseHistory()wurde entfernt.Die Methode
queryPurchaseHistory(), die zuvor als veraltet markiert war, wurde jetzt entfernt. Weitere Informationen dazu, welche alternativen APIs Sie stattdessen verwenden können, finden Sie unter Kaufhistorie abfragen.Die Methode
querySkuDetailsAsync()wurde entfernt.Die Methode
querySkuDetailsAsync(), die zuvor als veraltet markiert war, wurde jetzt entfernt. Verwenden Sie stattdessen queryProductDetailsAsync.Die Methode
BillingClient.Builder.enablePendingPurchases()wurde entfernt.Die Methode
enablePendingPurchases()ohne Parameter, die zuvor als veraltet gekennzeichnet war, wurde jetzt entfernt. Verwenden Sie stattdessenenablePendingPurchases(PendingPurchaseParams params). Die eingestellte FunktionenablePendingPurchases()ist funktional mitenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())identisch.Die überlastete
queryPurchasesAsync()-Methode, die einen skuType akzeptiert, wurde entfernt.Die Methode
queryPurchasesAsync(String skuType, PurchasesResponseListener listener), die zuvor als veraltet markiert war, wurde jetzt entfernt. Alternativ können Sie auchqueryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener)verwenden.
Google Play Billing Library 7.1.1 (03.10.2024)
Version 7.1.1 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler in Play Billing Library 7.1.0 im Zusammenhang mit Antwortcodes für Tests wurde behoben.
BillingResult
Google Play Billing Library 7.1.0 (19.09.2024)
Version 7.1.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Verbesserte Threadsicherheit in Bezug auf Verbindungsstatus und ‑verwaltung.
- Es wurden teilweise Änderungen für das Testen von [
BillingResult][billing-result]-Antwortcodes eingeführt, die in der Play Billing Library 7.1.1 vollständig veröffentlicht wurden. Wenn Sie Ihre Integration mit dieser Funktion testen möchten, müssen Sie ein Upgrade auf die Play Billing Library 7.1.1 durchführen. Es gibt einen Fehler, der sich nur auf Apps mit [aktivierten Abrechnungsüberschreibungen][enable-billing-overrides-testing] auswirkt und die reguläre Nutzung nicht beeinträchtigt. Weitere Informationen finden Sie unterBillingResult-Antwortcodes testen. [billing-result]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing
Google Play Billing Library 7.0.0 veröffentlicht (14.05.2024)
Version 7.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Es wurden APIs zur Unterstützung von Ratenzahlungsabos hinzugefügt.
- [
ProductDetails.InstallmentPlanDetails][installment-details] für Basis-Abos mit Ratenzahlung hinzugefügt, die Nutzer kaufen können. Mit dieser API kann Ihre App den Ratenzahlungsplan und die Einrichtung der Verpflichtung ermitteln, um dem Nutzer entsprechende Informationen bereitzustellen. Weitere Informationen findest du in unserem [Leitfaden zu Ratenzahlungen für Abos][installments]. [installment-details]: /reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails [installments]: /google/play/billing/subscriptions#installments
- [
PendingPurchasesParamsundBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)wurden hinzugefügt, umBillingClient.Builder.enablePendingPurchases()zu ersetzen, das in dieser Version verworfen wurde.- Die eingestellte Funktion
enablePendingPurchases()entspricht funktionalenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).
- Die eingestellte Funktion
Es wurden APIs zur Unterstützung ausstehender Transaktionen für Prepaid-Abos hinzugefügt:
- Verwenden Sie
PendingPurchasesParams.Builder.enablePrepaidPlans()zusammen mitBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams), um ausstehende Transaktionen für Prepaid-Abos zu aktivieren. Achten Sie beim Hinzufügen der Unterstützung darauf, dass Ihre App auch die Abo-Lebenszyklen korrekt verwaltet. Weitere Informationen zu ausstehenden Käufen Purchase.PendingPurchaseUpdateundPurchase.getPendingPurchaseUpdate()wurden hinzugefügt, um das ausstehende Aufladen oder Upgrade oder Downgrade eines bestehenden Abos abzurufen.
- Verwenden Sie
BillingClient.Builder.enableAlternativeBilling(),AlternativeBillingListenerundAlternativeChoiceDetailswurden entfernt .- Entwickler sollten stattdessen
BillingClient.Builder.enableUserChoiceBilling()mitUserChoiceBillingListenerundUserChoiceDetailsim Listener-Callback verwenden.
- Entwickler sollten stattdessen
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()> undBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()wurden entfernt. – Entwickler sollten stattdessenBillingFlowParams.SubscriptionUpdateParams.ReplacementModemitBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)verwenden. –BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode(). –BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode().Entfernt:
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken(). – Entwickler sollten stattdessenBillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)verwenden.BillingClient.queryPurchaseHistoryAsync()wurde eingestellt und wird in einer zukünftigen Version entfernt. Entwickler sollten stattdessen die folgenden Alternativen verwenden:- Bestätigte und ausstehende Käufe: Verwenden Sie
BillingClient.queryPurchasesAsync(), um die aktiven Käufe abzurufen. - Verbrauchte Käufe: Entwickler sollten verbrauchte Käufe auf ihren eigenen Servern im Blick behalten.
- Stornierte Käufe: Verwenden Sie die voided-purchases Developer API.
- Weitere Informationen finden Sie unter Kaufhistorie abfragen.
- Bestätigte und ausstehende Käufe: Verwenden Sie
BillingFlowParams.ProductDetailsParams.setOfferToken()löst jetzt eine Ausnahme aus, wenn Entwickler ein leeresofferTokenangeben.minSdkVersionwurde auf 21 undtargetSdkVersionauf 34 aktualisiert.
Google Play Billing Library 6.2.1 (16.04.2024)
Version 6.2.1 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Ein Fehler in
BillingClient.showAlternativeBillingOnlyInformationDialog()wurde behoben, bei demAlternativeBillingOnlyInformationDialogListenerin bestimmten Fällen nach Abschluss des Dialogfelds möglicherweise nicht aufgerufen wurde.
Google Play Billing Library 6.2.0 (06.03.2024)
Version 6.2.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurden APIs zur Unterstützung von externen Angeboten hinzugefügt.
BillingClient.Builder.enableExternalOffer()wurde hinzugefügt, um die Möglichkeit zu bieten, externe Angebote bereitzustellen.BillingClient.isExternalOfferAvailableAsync()wurde hinzugefügt, um die Verfügbarkeit der Funktion zum Bereitstellen externer Angebote zu prüfen.BillingClient.showExternalOfferInformationDialog()wurde hinzugefügt, um Nutzern ein Informationsdialogfeld zu präsentieren, bevor sie die App verlassen.BillingClient.createExternalOfferReportingDetailsAsync()wurde hinzugefügt, um eine Nutzlast zum Melden von Transaktionen zu erstellen, die über externe Angebote abgewickelt wurden.
Google Play Billing Library 6.1.0 (14.11.2023)
Version 6.1.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurden APIs zur Unterstützung der nur alternativen Abrechnung (d. h. ohne Auswahlmöglichkeit für Nutzer) hinzugefügt.
- Hinzugefügt
BillingClient.Builder.enableAlternativeBillingOnly()um die Möglichkeit zu bieten, nur die alternative Abrechnung anzubieten. BillingClient.isAlternativeBillingOnlyAvailableAsync()wurde hinzugefügt, um nur die Verfügbarkeit der alternativen Abrechnung zu prüfen.BillingClient.showAlternativeBillingOnlyInformationDialog()wurde hinzugefügt, um ein Informationsdialogfeld einzublenden, in dem Nutzer darüber informiert werden, dass nur die alternative Abrechnung verwendet wird.BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()wurde hinzugefügt, um eine Nutzlast zu erstellen, die nur zum Melden von Transaktionen über die alternative Abrechnung erforderlich ist.
- Hinzugefügt
- APIs zur benutzerdefinierten Abrechnung wurden aktualisiert
UserChoiceBillingListenerwurde hinzugefügt, um AlternativeBillingListener zu ersetzen, das als veraltet markiert wurde.UserChoiceDetailswurde hinzugefügt, umAlternativeChoiceDetailszu ersetzen, das als veraltet markiert wurde.BillingClient.Builder.enableUserChoiceBilling()wurde hinzugefügt, umBillingClient.Builder.enableAlternativeBilling()zu ersetzen, das als verworfen markiert wurde.
BillingClient.getBillingConfigAsync()wurde hinzugefügt, um die Google Play-Landesversion abzurufen.
Veröffentlichung der Google Play Billing Library 6.0.1 (22.06.2023)
Version 6.0.1 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Aktualisieren Sie die Play Billing Library, damit sie mit Android 14 kompatibel ist.
Google Play Billing Library 6.0 (10.05.2023)
Version 6.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Es wurde ein neues
ReplacementMode-Enum hinzugefügt, umProrationModezu ersetzen.ProrationModeist aus Gründen der Abwärtskompatibilität weiterhin verfügbar.Die Bestell-ID für Käufe von
PENDINGwurde entfernt.Bisher wurde die Bestell-ID immer erstellt, auch wenn der Kauf noch ausstand. Ab Version 6.0.0 wird für ausstehende Käufe keine Bestell-ID erstellt. Für diese Käufe wird die Bestell-ID erst ausgefüllt, wenn der Kauf in den Status
PURCHASEDverschoben wird.Die Methoden
queryPurchasesundlaunchPriceConfirmationFlowwurden entfernt.Die Methoden
queryPurchasesundlaunchPriceConfirmationFlow, die zuvor als veraltet markiert waren, wurden in der Play Billing Library 6.0.0 entfernt. Entwickler solltenqueryPurchasesAsyncanstelle vonqueryPurchasesverwenden.launchPriceConfirmationFlow-Alternativen finden Sie unter Preisänderungen.Neuer Antwortcode für Netzwerkfehler hinzugefügt.
Ab PBL-Version 6.0.0 wurde ein neuer Netzwerkfehler-Antwortcode hinzugefügt:
NETWORK_ERROR. Dieser Code wird zurückgegeben, wenn ein Fehler aufgrund eines Problems mit der Netzwerkverbindung auftritt. Diese Netzwerkverbindungsfehler wurden zuvor alsSERVICE_UNAVAILABLEgemeldet.SERVICE_UNAVAILABLEundSERVICE_TIMEOUTaktualisiert.Ab PBL-Version 6.0.0 werden Fehler aufgrund von Zeitüberschreitungen bei der Verarbeitung als
SERVICE_UNAVAILABLEanstelle des aktuellenSERVICE_TIMEOUTzurückgegeben.Das Verhalten ändert sich in früheren Versionen von PBL nicht.
Entfernt:
SERVICE_TIMEOUT.Ab PBL-Version 6.0.0 wird
SERVICE_TIMEOUTnicht mehr zurückgegeben. In früheren Versionen der PBL wird dieser Code weiterhin zurückgegeben.Zusätzliches Logging hinzugefügt.
Die Play Billing Library 6 enthält zusätzliche Protokollierung, die Einblicke in die API-Nutzung (z. B. Erfolg und Fehler) und Probleme mit der Dienstverbindung bietet. Diese Informationen werden verwendet, um die Leistung der Play Billing Library zu verbessern und einen besseren Support für Fehler zu bieten.
Veröffentlichung der Google Play Billing Library 5.2.1 (22.06.2023)
Version 5.2.1 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Aktualisieren Sie die Play Billing Library, damit sie mit Android 14 kompatibel ist.
Google Play Billing Library 5.2 (06.04.2023)
Version 5.2.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
- Es wurden Klassen hinzugefügt, um alternative Abrechnungsabläufe auf Smartphones und Tablets für Nutzer in Südkorea zu unterstützen:
- Die Methode
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()wurde hinzugefügt, um die externe Transaktions-ID des ursprünglichen Abos anzugeben. - Die Methode
BillingClient.Builder.enableAlternativeBilling()wurde hinzugefügt, damit Nutzer in Südkorea eine alternative Abrechnungsoption auswählen können.
Google Play Billing Library 5.1 (31.10.2022)
Version 5.1.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Die Methode
ProductDetails.SubscriptionOfferDetails.getOfferId()wurde hinzugefügt, um die Angebots-ID abzurufen. - Die Methode
ProductDetails.SubscriptionOfferDetails.getBasePlanId()zum Abrufen der Basis-Abo-ID wurde hinzugefügt. - Die
targetSdkVersionwurde auf 31 aktualisiert.
Google Play Billing Library 5.0 (11.05.2022)
Version 5.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Es wurde ein neues Modell für Abos eingeführt, einschließlich neuer Einheiten, mit denen Sie mehrere Angebote für ein einzelnes Abo-Produkt erstellen können. Weitere Informationen finden Sie in der Migrationsanleitung.
BillingClient.queryProductDetailsAsync()wurde hinzugefügt, umBillingClient.querySkuDetailsAsync()zu ersetzen.- Die
setIsOfferPersonalized()-Methode wurde für die Offenlegungspflichten für personalisierte Preise in der EU hinzugefügt. Weitere Informationen zur Verwendung dieser Methode finden Sie unter Personalisierten Preis angeben. - Die Methode
queryPurchases()wurde entfernt. Sie war bereits eingestellt und wurde durch „queryPurchasesAsync“ ersetzt, das in Version 4.0.0 der Google Play Billing Library eingeführt wurde. launchPriceChangeFlowwurde verworfen und wird in einer zukünftigen Version entfernt. Weitere Informationen zu Alternativen finden Sie unter Ablauf zur Bestätigung von Preisänderungen starten.- Entfernt wurde
setVrPurchaseFlow(), das zuvor beim Instanziieren eines Kaufvorgangs verwendet wurde. In früheren Versionen wurde der Nutzer mit dieser Methode weitergeleitet, um den Kauf auf seinem Android-Gerät abzuschließen. Nachdem Sie diese Methode entfernt haben, schließen Nutzer den Kauf über den Standardkaufvorgang ab.
Veröffentlichung der Google Play Billing Library 4.1 (23.02.2022)
Version 4.1.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
BillingClient.showInAppMessages()wurde hinzugefügt, um die Bearbeitung von abgelehnten Abozahlungen zu erleichtern. Weitere Informationen zur Verwendung von In-App-Nachrichten zur Behandlung von abgelehnten Zahlungen für Abos finden Sie unter Abgelehnte Zahlungen bearbeiten.
Google Play Billing Library 4.0 (18.05.2021)
Version 4.0.0 der Google Play Billing Library und Kotlin-Erweiterungen sind jetzt verfügbar.
Zusammenfassung der Änderungen
Wurde hinzugefügt
BillingClient.queryPurchasesAsync()als Ersatz fürBillingClient.queryPurchases()die in einer zukünftigen Version entfernt wird.Neuer Abo-Ersatzmodus hinzugefügt:
IMMEDIATE_AND_CHARGE_FULL_PRICE.Die Methode
BillingClient.getConnectionState()wurde hinzugefügt, um den Verbindungsstatus der Play Billing Library abzurufen.Javadoc und Implementierung wurden aktualisiert, um anzugeben, auf welchem Thread eine Methode aufgerufen werden kann und auf welchem Thread Ergebnisse bereitgestellt werden.
BillingFlowParams.Builder.setSubscriptionUpdateParams()wurde als neue Möglichkeit zum Initiieren von Abo-Updates hinzugefügt. Dadurch werden die folgenden Variablen ersetzt, die entfernt wurden:BillingFlowParams#getReplaceSkusProrationMode,BillingFlowParams#getOldSkuPurchaseToken,BillingFlowParams#getOldSku,BillingFlowParams.Builder#setReplaceSkusProrationMode,BillingFlowParams.Builder#setOldSku.Hinzugefügt:
Purchase.getQuantity()undPurchaseHistoryRecord.getQuantity().Hinzugefügt:
Purchase#getSkus()undPurchaseHistoryRecord#getSkus(). Sie ersetzenPurchase#getSkuundPurchaseHistoryRecord#getSku, die entfernt wurden.BillingFlowParams#getSku,BillingFlowParams#getSkuDetailsundBillingFlowParams#getSkuTypewurden entfernt.
Google Play Billing Library 3.0.3 (12.03.2021)
Version 3.0.3 der Google Play Billing Library, der Kotlin-Erweiterung und des Unity-Plug-ins ist jetzt verfügbar.
Fehlerkorrekturen für Java und Kotlin
- Speicherleck behoben, das auftrat, wenn
endConnection()aufgerufen wurde. - Problem behoben, das auftrat, wenn die Google Play Billing Library von Apps verwendet wurde, die den Startmodus „singleTask“ verwenden. Ein
onPurchasesUpdated()-Callback wird ausgelöst, wenn eine App über den Android-Launcher fortgesetzt wird und das Abrechnungsdialogfeld vor dem Anhalten sichtbar war.
Unity-Fehlerkorrekturen
- Aktualisieren Sie auf Java-Version 3.0.3, um das Speicherleck zu beheben und das Problem zu lösen, das Käufe verhinderte, wenn eine App über den Android-Launcher fortgesetzt wurde und der Abrechnungsdialog vor dem Anhalten sichtbar war.
Google Play Billing Library 3.0.2 (24.11.2020)
Version 3.0.2 der Google Play Billing Library und der Kotlin-Erweiterung sind jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler in der Kotlin-Erweiterung wurde behoben, bei dem die Coroutine mit dem Fehler „Already resumed“ (Bereits fortgesetzt) fehlgeschlagen ist.
- Es wurden nicht aufgelöste Referenzen behoben, wenn die Kotlin-Erweiterung mit der kotlinx.coroutines-Bibliotheksversion 1.4 oder höher verwendet wird.
Google Play Billing Library 3.0.1 (30.09.2020)
Version 3.0.1 der Google Play Billing Library und der Kotlin-Erweiterung sind jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem
PurchasesUpdatedListenermöglicherweise nicht mit dem Kaufergebnis aufgerufen wurde, wenn die App während des Abrechnungsablaufs beendet und wiederhergestellt wurde.
Veröffentlichung der Google Play Billing Library 3.0 (08.06.2020)
Version 3.0.0 der Google Play Billing Library, der Kotlin-Erweiterung und des Unity-Plug-ins ist jetzt verfügbar.
Zusammenfassung der Änderungen
- Unterstützung für Artikelnummern für Prämien entfernt.
- Die Parameter
ChildDirectedundUnderAgeOfConsentwurden entfernt. - Veraltete Methoden für Entwickler-Payloads wurden entfernt.
- Die verworfenen Methoden
BillingFlowParams.setAccountId()undBillingFlowParams.setDeveloperId()wurden entfernt. - Die verworfenen Methoden
BillingFlowParams.setOldSkus(String oldSku)undBillingFlowParams.addOldSku(String oldSku)wurden entfernt. - Es wurden Nullable-Annotationen hinzugefügt.
Fehlerkorrekturen
SkuDetails.getIntroductoryPriceCycles()gibt jetztintanstelle vonStringzurück.- Ein Fehler wurde behoben, bei dem der Abrechnungsablauf so behandelt wurde, als ob er zusätzliche Parameter hätte, auch wenn keine zusätzlichen Parameter festgelegt waren.
Google Play Billing Library 2.2.1 (20.05.2020)
Version 2.2.1 der Google Play Billing Library ist jetzt verfügbar.
Fehlerkorrekturen
- Die Standardversion der Java Play Billing Library, von der die Kotlin-Erweiterung abhängt, wurde aktualisiert.
Veröffentlichung der Google Play Billing Library 2.2.0 und Unity-Unterstützung (23.03.2020)
Version 2.2.0 von Google Play Billing bietet Funktionen, mit denen Entwickler dafür sorgen können, dass Käufe dem richtigen Nutzer zugeordnet werden. Durch diese Änderungen ist es nicht mehr erforderlich, benutzerdefinierte Lösungen auf Grundlage der Entwickler-Payload zu erstellen. Im Rahmen dieser Aktualisierung wurde die Funktion für Entwickler-Payloads eingestellt und wird in einer zukünftigen Version entfernt. Weitere Informationen, einschließlich empfohlener Alternativen, finden Sie unter Entwickler-Payload.
Google Play Billing Library 2 für Unity
Zusätzlich zu den aktuellen Java- und Kotlin-Versionen der Google Play Billing Library 2 haben wir eine Version der Bibliothek für die Verwendung mit Unity veröffentlicht. Spieleentwickler, die die Unity In-App Purchase API verwenden, können jetzt ein Upgrade durchführen, um alle Funktionen der Google Play Billing Library 2 zu nutzen und die nachfolgenden Upgrades auf zukünftige Versionen der Google Play Billing Library zu vereinfachen.
Weitere Informationen finden Sie unter Google Play Billing mit Unity verwenden.
Zusammenfassung der Änderungen
- Java Google Play Billing Library
- In
AcknowledgePurchaseParamswurden die veralteten MethodensetDeveloperPayload()undgetDeveloperPayload()entfernt. - In
ConsumeParamswurden die veralteten MethodensetDeveloperPayload()undgetDeveloperPayload()entfernt. - In
BillingFlowParams> wurdesetAccountId()insetObfuscatedAccountId()umbenannt. Außerdem wurde eine Längenbeschränkung von 64 Zeichen und eine Beschränkung dokumentiert, die personenidentifizierbare Informationen in diesem Feld verbietet.setAccountId()wurde als veraltet markiert und wird in einer zukünftigen Bibliotheksversion entfernt. - In
BillingFlowParamswurdesetObfuscatedProfileId()hinzugefügt, das ähnlich wiesetObfuscatedAccountId()funktioniert. Weitere Informationen finden Sie unter Aktualisierungen und Alternativen für Entwicklernutzlast. - In
Purchasewurde die MethodegetAccountIdentifiers()hinzugefügt, um die inBillingFlowParamsfestgelegten verschleierten Konto-IDs zurückzugeben. - In
BillingClientwurde die MethodeloadRewardedSku()im Rahmen der Einstellung von SKUs mit Prämie als eingestellt markiert. Weitere Informationen zur Einstellung finden Sie in der Play Console-Hilfe.
- In
Veröffentlichung der Google Play Billing Library 2.1.0 und der Kotlin-Erweiterung 2.1.0 (10.12.2019)
Version 2.1.0 der Google Play Billing Library und die neue Kotlin-Erweiterung sind jetzt verfügbar. Die Kotlin-Erweiterung der Play Billing Library bietet idiomatische API-Alternativen für die Verwendung von Kotlin mit besserer Null-Sicherheit und Coroutinen. Codebeispiele finden Sie unter Google Play Billing Library verwenden.
Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- In
BillingFlowParamswurdesetOldSku(String oldSku)eingestellt und durchsetOldSku(String oldSku, String purchaseToken)ersetzt, um zu verdeutlichen, wann mehrere Konten auf dem Gerät dieselbe SKU haben.
Google Play Billing Library 2.0.3 (05.08.2019)
Version 2.0.3 der Google Play Billing Library ist jetzt verfügbar.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem
querySkuDetailsAsync()gelegentlich mit dem CodeDEVELOPER_ERRORfehlgeschlagen ist, anstatt ein erfolgreiches Ergebnis zurückzugeben.
Google Play Billing Library 2.0.2 (08.07.2019)
Version 2.0.2 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält Aktualisierungen der Referenzdokumentation. Die Funktionalität der Bibliothek wird dadurch nicht geändert.
Veröffentlichung der Google Play Billing Library 2.0.1 (06.06.2019)
Version 2.0.1 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Debugging-Nachrichten in einigen Fällen als
nullzurückgegeben wurden. - Ein potenzielles Speicherleck wurde behoben.
Veröffentlichung der Google Play Billing Library 2.0 (07.05.2019)
Version 2.0 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Käufe müssen innerhalb von drei Tagen bestätigt werden
Google Play unterstützt den Kauf von Produkten in Ihrer App (In-App) oder außerhalb Ihrer App (Out-of-App). Damit Google Play ein einheitliches Einkaufserlebnis bietet, unabhängig davon, wo der Nutzer Ihr Produkt kauft, müssen Sie alle Käufe, die über die Google Play Billing Library eingehen, so schnell wie möglich nach der Gewährung des Anspruchs für den Nutzer bestätigen. Wenn Sie einen Kauf nicht innerhalb von drei Tagen bestätigen, erhält der Nutzer automatisch eine Erstattung und Google Play widerruft den Kauf. Bei ausstehenden Transaktionen (neu in Version 2.0) beginnt das Dreitageszeitfenster, wenn der Kauf in den Status PURCHASED wechselt. Es gilt nicht, solange sich der Kauf im Status PENDING befindet.
Bei Abos müssen Sie jeden Kauf mit einem neuen Kauf-Token bestätigen. Das bedeutet, dass alle Erstkäufe, Tarifänderungen und erneuten Anmeldungen bestätigt werden müssen, nachfolgende Verlängerungen jedoch nicht. Ob ein Kauf bestätigt werden muss, können Sie anhand des Felds „Bestätigung“ im Kauf prüfen.
Das Objekt Purchase enthält jetzt die Methode isAcknowledged(), die angibt, ob ein Kauf bestätigt wurde. Außerdem enthält die Google Play Developer API boolesche Bestätigungswerte für Purchases.products und Purchases.subscriptions.
Bevor Sie einen Kauf bestätigen, sollten Sie mit diesen Methoden prüfen, ob der Kauf bereits bestätigt wurde.
Sie können einen Kauf mit einer der folgenden Methoden bestätigen:
- Verwenden Sie für Verbrauchsprodukte
consumeAsync(), das in der Client-API verfügbar ist. - Verwenden Sie für Produkte, die nicht verbraucht werden,
acknowledgePurchase()in der Client-API. - In der Server API ist auch eine neue
acknowledge()-Methode verfügbar.
BillingFlowParams.setSku() wurde entfernt
Die zuvor verworfene Methode BillingFlowParams#setSku() wurde in diesem Release entfernt. Bevor Sie Produkte in einem Kaufvorgang rendern, müssen Sie jetzt BillingClient.querySkuDetailsAsync() aufrufen und das resultierende SkuDetails-Objekt an BillingFlowParams.Builder.setSkuDetails() übergeben.
Codebeispiele finden Sie unter Google Play Billing Library verwenden.
Entwicklernutzlast wird unterstützt
Version 2.0 der Google Play Billing Library bietet Unterstützung für die Entwickler-Nutzlast – beliebige Strings, die an Käufe angehängt werden können. Sie können einen Parameter für die Entwickler-Payload an einen Kauf anhängen, aber nur, wenn der Kauf bestätigt oder verwendet wird. Das unterscheidet sich von der Entwicklernutzlast in AIDL, bei der die Nutzlast beim Starten des Kaufvorgangs angegeben werden konnte. Da Käufe jetzt außerhalb Ihrer App initiiert werden können, sorgt diese Änderung dafür, dass Sie immer die Möglichkeit haben, Käufen eine Nutzlast hinzuzufügen.
Um in der neuen Bibliothek auf die Nutzlast zuzugreifen, enthalten Purchase-Objekte jetzt die Methode getDeveloperPayload().
Einheitliche Angebote
Wenn Sie eine Artikelnummer mit Rabatt anbieten, gibt Google Play jetzt den Originalpreis der Artikelnummer zurück, damit Sie Nutzern anzeigen können, dass sie einen Rabatt erhalten.
SkuDetails enthält zwei neue Methoden zum Abrufen des ursprünglichen Artikelnummerpreises:
getOriginalPriceAmountMicros()- Gibt den unformatierten Originalpreis der SKU vor dem Rabatt zurück.
getOriginalPrice()- gibt den Originalpreis mit zusätzlicher Währungsformatierung zurück.
Ausstehende Transaktionen
Mit Version 2.0 der Google Play Billing Library müssen Sie Käufe unterstützen, bei denen zusätzliche Maßnahmen erforderlich sind, bevor die Berechtigung gewährt wird. Ein Nutzer könnte beispielsweise Ihr In‑App-Produkt in einem Geschäft mit Bargeld kaufen. Das bedeutet, dass die Transaktion außerhalb Ihrer App abgeschlossen wird. In diesem Fall sollten Sie die Berechtigung erst gewähren, nachdem der Nutzer die Transaktion abgeschlossen hat.
Wenn Sie ausstehende Käufe aktivieren möchten, rufen Sie enablePendingPurchases() im Rahmen der Initialisierung Ihrer App auf.
Verwenden Sie Purchase.getPurchaseState(), um festzustellen, ob der Kaufstatus PURCHASED oder PENDING ist. Das Recht sollte nur gewährt werden, wenn der Status PURCHASED ist. So prüfen Sie den Status von Purchase:
- Rufen Sie beim Starten Ihrer App
BillingClient.queryPurchases()auf, um die Liste der nicht verbrauchten Produkte abzurufen, die dem Nutzer zugeordnet sind. - Rufen Sie
Purchase.getPurchaseState()für jedes zurückgegebenePurchase-Objekt auf. - Implementieren Sie die Methode
onPurchasesUpdated(), um auf Änderungen anPurchase-Objekten zu reagieren.
Außerdem enthält die Google Play Developer API den Status PENDING für Purchases.products.
Ausstehende Transaktionen werden für Abos nicht unterstützt.
Mit diesem Release wird auch ein neuer Typ von Entwicklerbenachrichtigungen in Echtzeit eingeführt: OneTimeProductNotification. Dieser Benachrichtigungstyp enthält eine einzelne Nachricht, deren Wert entweder ONE_TIME_PRODUCT_PURCHASED oder ONE_TIME_PRODUCT_CANCELED ist. Diese Benachrichtigung wird nur für Käufe gesendet, die mit verzögerten Zahlungsmethoden wie Bargeld bezahlt wurden.
Wenn Sie ausstehende Käufe bestätigen, sollten Sie dies nur tun, wenn der Kaufstatus PURCHASED und nicht PENDING ist.
API-Änderungen
Version 2.0 der Google Play Billing Library enthält mehrere API-Änderungen, um neue Funktionen zu unterstützen und vorhandene Funktionen zu verdeutlichen.
consumeAsync
consumeAsync()
akzeptiert jetzt ein ConsumeParams-Objekt
anstelle einer purchaseToken. ConsumeParams enthält den purchaseToken sowie eine optionale Entwicklernutzlast.
Die vorherige Version von consumeAsync() wurde in diesem Release entfernt.
queryPurchaseHistoryAsync
Um Verwirrung zu vermeiden, gibt queryPurchaseHistoryAsync() jetzt ein PurchaseHistoryRecord-Objekt anstelle eines Purchase-Objekts zurück. Das PurchaseHistoryRecord-Objekt entspricht einem Purchase-Objekt, spiegelt jedoch nur die von queryPurchaseHistoryAsync() zurückgegebenen Werte wider und enthält nicht die Felder autoRenewing, orderId und packageName. An den zurückgegebenen Daten hat sich nichts geändert. queryPurchaseHistoryAsync() gibt dieselben Daten wie zuvor zurück.
Rückgabewerte von BillingResult
APIs, die zuvor einen BillingResponse-Ganzzahlwert zurückgegeben haben, geben jetzt ein BillingResult-Objekt zurück. BillingResult enthält die BillingResponse-Ganzzahl sowie einen Debug-String, mit dem Sie Fehler diagnostizieren können. Der Debug-String verwendet das Gebietsschema „en-US“ und ist nicht für Endnutzer bestimmt.
Fehlerkorrekturen
SkuDetails.getIntroductoryPriceAmountMicros()gibt jetzt einelonganstelle einerStringzurück.
Google Play Billing Library 1.2.2 (07.03.2019)
Version 1.2.2 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Fehlerkorrekturen
- Ein in Version 1.2.1 eingeführtes Threading-Problem wurde behoben. Hintergrundaufrufe blockieren den Hauptthread nicht mehr.
Sonstige Änderungen
- Obwohl die Verwendung des Haupt-Threads weiterhin empfohlen wird, können Sie die Google Play Billing Library jetzt in einem Hintergrund-Thread instanziieren.
- Die Instanziierung wurde vollständig in den Hintergrundthread migriert, um das Risiko von ANR-Fehlern zu verringern.
Play Billing Library 1.2.1 (04.03.2019)
Version 1.2.1 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Größere Änderungen
- Unterstützung für Prämienprodukte hinzugefügt. Weitere Informationen zu Monetarisierungsoptionen finden Sie unter Funktionen für Produkte mit Prämie hinzufügen.
Sonstige Änderungen
- Es wurden öffentliche Konstruktoren für
PurchasesResultundSkuDetailsResulthinzugefügt, um das Testen zu erleichtern. SkuDetails-Objekte können eine neue Methode verwenden:getOriginalJson().- Alle AIDL-Dienstaufrufe werden jetzt von Hintergrund-Threads verarbeitet.
Fehlerkorrekturen
- Null-Callback-Listener werden nicht mehr an öffentliche APIs übergeben.
Google Play Billing Library 1.2 (18.10.2018)
Version 1.2 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Die Google Play Billing Library wird jetzt unter der Lizenzvereinbarung für das Android Software Development Kit lizenziert.
- Die
launchPriceChangeConfirmationFlowAPI wurde hinzugefügt. Mit ihr werden Nutzer aufgefordert, eine ausstehende Änderung des Abopreises zu überprüfen. - Es wurde Unterstützung für einen neuen Abrechnungsmodus,
DEFERRED, beim Upgraden oder Downgraden des Abos eines Nutzers hinzugefügt. - In der Klasse
BillingFlowParamswurdesetSku()durchsetSkuDetails()ersetzt. - Kleinere Fehlerkorrekturen und Codeoptimierungen.
Bestätigung der Preisänderung
Sie können jetzt den Preis eines Abos in der Google Play Console ändern und Nutzer auffordern, den neuen Preis zu prüfen und zu akzeptieren, wenn sie Ihre App aufrufen.
Wenn Sie diese API verwenden möchten, erstellen Sie ein PriceChangeFlowParams-Objekt mit der skuDetails des Abo-Produkts und rufen Sie dann launchPriceChangeConfirmationFlow() auf. Implementieren Sie PriceChangeConfirmationListener, um das Ergebnis zu verarbeiten, wenn der Bestätigungsablauf für die Preisänderung abgeschlossen ist, wie im folgenden Code-Snippet gezeigt:
Kotlin
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
Java
PriceChangeFlowParams priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build(); billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, new PriceChangeConfirmationListener() { @Override public void onPriceChangeConfirmationResult(int responseCode) { // Handle the result. } });
Im Bestätigungsablauf für Preisänderungen wird ein Dialogfeld mit den neuen Preisinformationen angezeigt, in dem Nutzer aufgefordert werden, den neuen Preis zu akzeptieren. Bei diesem Ablauf wird ein Antwortcode vom Typ BillingClient.BillingResponse zurückgegeben.
Neuer Abrechnungsmodus
Wenn Sie das Abo eines Nutzers upgraden oder downgraden, können Sie den neuen Abrechnungsmodus DEFERRED verwenden. In diesem Modus wird das Abo des Nutzers bei der nächsten Verlängerung aktualisiert.
Weitere Informationen zum Festlegen dieses Abrechnungsmodus finden Sie unter Abrechnungsmodus festlegen.
Neue Methode zum Festlegen von SKU-Details
In der Klasse BillingFlowParams wurde die Methode setSku() als veraltet eingestuft.
Diese Änderung dient zur Optimierung des Google Play Billing-Ablaufs.
Wenn Sie eine neue Instanz von BillingFlowParams in Ihrem In-App-Abrechnungsclient erstellen, empfehlen wir, stattdessen direkt mit dem JSON-Objekt zu arbeiten, indem Sie setSkuDetails() verwenden, wie im folgenden Code-Snippet gezeigt:
In der Builder-Klasse BillingFlowParams wurde die Methode setSku() eingestellt. Verwenden Sie stattdessen die Methode setSkuDetails(), wie im folgenden Code-Snippet gezeigt. Das an das setSkuDetails()-Objekt übergebene Objekt stammt aus der Methode querySkuDetailsAsync().
Kotlin
private lateinit var mBillingClient: BillingClient private val mSkuDetailsMap = HashMap<String, SkuDetails>() private fun querySkuDetails() { val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder() mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build() ) { responseCode, skuDetailsList -> if (responseCode == 0) { for (skuDetails in skuDetailsList) { mSkuDetailsMap[skuDetails.sku] = skuDetails } } } } private fun startPurchase(skuId: String) { val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap[skuId]) .build() }
Java
private BillingClient mBillingClient; private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private void querySkuDetails() { SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder(); mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) { if (responseCode == 0) { for (SkuDetails skuDetails : skuDetailsList) { mSkuDetailsMap.put(skuDetails.getSku(), skuDetails); } } } }); } private void startPurchase(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); }
Play Billing Library 1.1 (07.05.2018)
Version 1.1 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Zusammenfassung der Änderungen
- Es wurde Unterstützung für die Angabe eines Abrechnungsmodus in
BillingFlowParamsbeim Upgraden/Downgraden eines bestehenden Abos hinzugefügt. - Das boolesche Flag
replaceSkusProrationinBillingFlowParamswird nicht mehr unterstützt. Verwenden Sie stattdessenreplaceSkusProrationMode. launchBillingFlow()löst jetzt einen Callback für fehlgeschlagene Antworten aus.
Geändertes Verhalten
Version 1.1 der Google Play Billing Library enthält die folgenden Verhaltensänderungen.
Entwickler können replaceSkusProrationMode in der Klasse BillingFlowParams festlegen.
Ein ProrationMode enthält weitere Details zur Art der anteiligen Berechnung beim Upgrade oder Downgrade des Abos eines Nutzers.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play unterstützt die folgenden Abrechnungsmodi:
IMMEDIATE_WITH_TIME_PRORATION |
Der Ersatz tritt sofort in Kraft. Die neue Ablaufzeit wird anteilig berechnet und dem Nutzer gutgeschrieben oder in Rechnung gestellt. Das ist das aktuelle Standardverhalten. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
Die Ersetzung wird sofort wirksam und der Abrechnungszeitraum bleibt unverändert. Der Preis für den verbleibenden Zeitraum wird in Rechnung gestellt.
Hinweis: Diese Option ist nur für das Upgrade von Abos verfügbar. |
IMMEDIATE_WITHOUT_PRORATION |
Die Ersetzung erfolgt sofort und der neue Preis wird bei der nächsten Wiederholung berechnet. Der Abrechnungszeitraum bleibt unverändert. |
replaceSkusProration wird in der Klasse BillingFlowParams nicht mehr unterstützt
Entwickler konnten bisher ein boolesches Flag festlegen, um einen anteiligen Betrag für eine Anfrage zum Abo-Upgrade zu berechnen. Da wir ProrationMode unterstützen, das detailliertere Anweisungen zur anteiligen Berechnung enthält, wird dieses boolesche Flag nicht mehr unterstützt.
launchBillingFlow() löst jetzt einen Callback für fehlgeschlagene Antworten aus
Die Billing Library löst immer den Callback PurhcasesUpdatedListener aus und gibt asynchron BillingResponse zurück. Der synchrone Rückgabewert von BillingResponse wird ebenfalls beibehalten.
Fehlerkorrekturen
- Die asynchronen Methoden werden ordnungsgemäß beendet, wenn die Verbindung zum Dienst getrennt wird.
BuilderDurch Parameterobjekte werden erstellte Objekte nicht mehr geändert.- Problem 68087141:
launchBillingFlow()löst jetzt einen Callback für fehlgeschlagene Antworten aus.
Veröffentlichung der Google Play Billing Library 1.0 (19.09.2017, Ankündigung)
Version 1.0 der Google Play Billing Library ist jetzt verfügbar. Diese Version enthält die folgenden Änderungen.
Wichtige Änderungen
- Die Berechtigung für die eingebettete Abrechnung ist im Manifest der Bibliothek enthalten. Es ist nicht mehr erforderlich, die Berechtigung
com.android.vending.BILLINGim Android-Manifest hinzuzufügen. - Der Klasse
BillingClient.Builderwurde ein neuer Builder hinzugefügt. - Das Builder-Muster für die Klasse
SkuDetailsParamswurde eingeführt, um es in Methoden zum Abfragen von Artikelnummern zu verwenden. - Mehrere API-Methoden wurden aus Konsistenzgründen aktualisiert (gleiche Namen und Reihenfolge der Rückgabeargumente).
Geändertes Verhalten
Version 1.0 der Google Play Billing Library enthält die folgenden Verhaltensänderungen.
Klasse BillingClient.Builder
BillingClient.Builder
wird jetzt über das newBuilder-Muster initialisiert:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Die Methode „launchBillingFlow“ wird jetzt mit der Klasse „BillingFlowParams“ aufgerufen.
Um den Abrechnungsablauf für einen Kauf oder ein Abo zu starten, empfängt die Methode launchBillingFlow() eine BillingFlowParams-Instanz, die mit anfragespezifischen Parametern initialisiert wird:
Kotlin
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
Java
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
Neue Möglichkeit zum Abfragen verfügbarer Produkte
Argumente für die Methoden queryPurchaseHistoryAsync() und querySkuDetailsAsync() wurden in ein Builder-Muster verpackt:
Kotlin
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
Java
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
Das Ergebnis wird jetzt über den Ergebniscode und eine Liste von SkuDetails-Objekten zurückgegeben. Das ist praktischer und sorgt für Konsistenz in unserer API.
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Reihenfolge der Parameter für die Methode onConsumeResponse() geändert
Die Reihenfolge der Argumente für onConsumeResponse aus der Schnittstelle ConsumeResponseListener wurde geändert, um sie an unsere API anzugleichen:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Entpacktes „PurchaseResult“-Objekt
PurchaseResult
wurde entpackt, um die Konsistenz unserer API zu gewährleisten:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Fehlerkorrekturen
- Kein Antwortcode im PURCHASES_UPDATED-Bundle
- Probleme mit ProxyBillingActivity und PurchasesUpdatedListener bei der Geräteausrichtung beheben
Veröffentlichung der Developer Preview 1 (12.06.2017, Ankündigung)
Einführung der Entwicklervorschau, die den Entwicklungsprozess für die Abrechnung vereinfachen soll. So können sich Entwickler auf die Implementierung von Logik konzentrieren, die für die Android-App spezifisch ist, z. B. Anwendungsarchitektur und Navigationsstruktur.
Die Bibliothek enthält mehrere praktische Klassen und Funktionen, die Sie bei der Integration Ihrer Android-Apps in die Google Play Billing API verwenden können. Die Bibliothek bietet auch eine Abstraktionsebene für den AIDL-Dienst (Android Interface Definition Language), sodass Entwickler die Schnittstelle zwischen der App und der Google Play Billing API einfacher definieren können.