Google Play Billing Library リリースノート

このトピックには、Google Play Billing Library のリリースノートが含まれています。

Google Play Billing Library 7.0.0 リリース(2024-05-14)

Google Play Billing Library と Kotlin 拡張機能のバージョン 7.0.0 がリリースされました。 できます。

変更の概要

Google Play Billing Library 6.2.1 リリース(2024-04-16)

Google Play Billing Library と Kotlin 拡張機能のバージョン 6.2.1 がリリースされました。 できます。

変更の概要

Google Play Billing Library 6.2.0 リリース(2024-03-06)

Google Play Billing Library と Kotlin 拡張機能のバージョン 6.2.0 がリリースされました。 できます。

変更の概要

Google Play Billing Library 6.1.0 リリース(2023-11-14)

Google Play Billing Library と Kotlin 拡張機能のバージョン 6.1.0 がリリースされました。

変更の概要

Google Play Billing Library 6.0.1 リリース(2023-06-22)

Google Play Billing Library と Kotlin 拡張機能のバージョン 6.0.1 がリリースされました。

変更の概要

Android 14 に対応するように Play Billing Library を更新しました。

Google Play Billing Library 6.0 リリース(2023-05-10)

Google Play Billing Library と Kotlin 拡張機能のバージョン 6.0.0 がリリースされました。

変更の概要

  • ProrationMode の代わりとして、新しい ReplacementMode 列挙型を追加しました。

    なお、下位互換性の維持のため、ProrationMode は引き続き利用できます。

  • PENDING 購入の注文 ID を削除しました。

    以前は、購入が保留中であっても、常に注文 ID が作成されていました。バージョン 6.0.0 以降は、保留中の購入の注文 ID は作成されません。このような購入では、購入ステータスが PURCHASED に移行すると注文 ID が入力されます。

  • queryPurchases メソッドと launchPriceConfirmationFlow メソッドを削除しました。

    これまで非推奨とマークされていた queryPurchases メソッドと launchPriceConfirmationFlow メソッドは、Play Billing Library 6.0.0 から削除されました。デベロッパーは queryPurchases ではなく queryPurchasesAsync を使用する必要があります。launchPriceConfirmationFlow の代わりについては、価格の変更をご覧ください。

  • 新しいネットワーク エラー レスポンス コードを追加しました。

    新しいネットワーク エラー レスポンス コードである NETWORK_ERROR が PBL バージョン 6.0.0 から追加されました。ネットワーク接続の問題によりエラーが発生した場合に、このコードが返されます。これまでこのようなネットワーク接続エラーは、SERVICE_UNAVAILABLE と返されていました。

  • SERVICE_UNAVAILABLESERVICE_TIMEOUT を更新しました。

    PBL バージョン 6.0.0 より、処理のタイムアウトによるエラーは現在の SERVICE_TIMEOUT ではなく SERVICE_UNAVAILABLE と返されます。

    これは以前のバージョンの PBL では変更されません。

  • SERVICE_TIMEOUT を削除しました。

    PBL バージョン 6.0.0 より、SERVICE_TIMEOUT は返されなくなります。以前のバージョンの PBL では引き続きこのコードが返されます。

  • 追加のロギングを追加しました。

    Play Billing Library 6 リリースには追加ロギングが含まれます。追加ロギングは API の使用状況(成功と失敗など)とサービス接続の問題に関する分析情報を提供します。この情報は Play Billing Library のパフォーマンスを改善し、エラーを適切にサポートするために使用されます。

Google Play Billing Library 5.2.1 リリース(2023-06-22)

Google Play Billing Library と Kotlin 拡張機能のバージョン 5.2.1 がリリースされました。

変更の概要

Android 14 に対応するように Play Billing Library を更新しました。

Google Play Billing Library 5.2 リリース(2023-04-06)

Google Play Billing Library と Kotlin 拡張機能のバージョン 5.2.0 がリリースされました。

変更の概要

Google Play Billing Library 5.1 リリース(2022-10-31)

Google Play Billing Library と Kotlin 拡張機能のバージョン 5.1.0 がリリースされました。

このバージョンには、以下の変更が含まれています。

変更の概要

Google Play Billing Library 5.0 リリース(2022-05-11)

Google Play Billing Library と Kotlin 拡張機能のバージョン 5.0.0 がリリースされました。

このバージョンには、以下の変更が含まれています。

変更の概要

  • 定期購入の新しいモデル(単一の定期購入アイテムについて複数の特典を作成できる新しいエンティティなど)を導入しました。詳しくは、移行ガイドをご覧ください。
  • BillingClient.querySkuDetailsAsync() の代わりとして BillingClient.queryProductDetailsAsync() を追加しました。
  • EU のパーソナライズされた価格開示要件のために setIsOfferPersonalized() メソッドを追加しました。このメソッドの使用方法については、価格のパーソナライズを示すをご覧ください。
  • queryPurchases() を削除しました。これは、以前非推奨になり、Google Play Billing Library 4.0.0 で導入された queryPurchasesAsync に置き換えられています。
  • launchPriceChangeFlow は非推奨になりました。将来のリリースで削除される予定です。代替手段の詳細については、価格変更確定フローを起動するをご覧ください。
  • 以前、購入フローをインスタンス化する際に使用されていた setVrPurchaseFlow() を削除しました。以前のバージョンでは、このメソッドはユーザーを Android デバイスでの購入完了手続きにリダイレクトしていました。このメソッドを削除すると、ユーザーは通常の購入フローで購入手続きを完了するようになります。

Google Play Billing Library 4.1 リリース(2022-02-23)

Google Play Billing Library と Kotlin 拡張機能のバージョン 4.1.0 がリリースされました。

このバージョンには、以下の変更が含まれています。

変更の概要

Google Play Billing Library 4.0 リリース(2021-05-18)

Google Play Billing Library と Kotlin 拡張機能のバージョン 4.0.0 がリリースされました。

変更の概要

Google Play Billing Library 3.0.3 リリース(2021-03-12)

Google Play Billing Library、Kotlin 拡張機能、Unity プラグインのバージョン 3.0.3 がリリースされました。

Java と Kotlin のバグの修正

  • endConnection() を呼び出す際に発生するメモリリークを修正しました。
  • 単一タスクの起動モードを利用するアプリで Google Play Billing Library を使用する際に発生する問題を修正しました。請求ダイアログが表示された状態でアプリが停止され、その後アプリが Android ランチャーから再開された場合、onPurchasesUpdated() コールバックがトリガーされるようになります。

Unity のバグの修正

  • Java バージョン 3.0.3 への更新でメモリリークを修正し、請求ダイアログが表示された状態でアプリが停止され、その後アプリが Android ランチャーから再開された場合に購入できなくなる問題を解決しました。

Google Play Billing Library 3.0.2 リリース(2020-11-24)

Google Play Billing Library と Kotlin 拡張機能のバージョン 3.0.2 がリリースされました。

バグの修正

  • Kotlin 拡張機能でコルーチンがエラー「Already resume」を返して失敗するバグを修正しました。
  • Kotlin 拡張機能が kotlinx.coroutines ライブラリ バージョン 1.4 以上で使用されている場合の未解決の参照を修正しました。

Google Play Billing Library 3.0.1 リリース(2020-09-30)

Google Play Billing Library と Kotlin 拡張機能のバージョン 3.0.1 がリリースされました。

バグの修正

  • 請求フローの途中で強制終了されたアプリが復帰した場合、購入結果を通知する PurchasesUpdatedListener が呼び出されないことがあるバグを修正しました。

Google Play Billing Library 3.0 リリース(2020-06-08)

Google Play Billing Library、Kotlin 拡張機能、Unity プラグインのバージョン 3.0.0 がリリースされました。

変更の概要

  • 特典 SKU のサポートを削除しました。
  • ChildDirected パラメータと UnderAgeOfConsent パラメータを削除しました。
  • サポートが終了したデベロッパー ペイロード メソッドを削除しました。
  • サポートが終了した BillingFlowParams.setAccountId() メソッドと BillingFlowParams.setDeveloperId() メソッドを削除しました。
  • サポートが終了した BillingFlowParams.setOldSkus(String oldSku) メソッドと BillingFlowParams.addOldSku(String oldSku) メソッドを削除しました。
  • null 可能性アノテーションを追加しました。

バグの修正

  • SkuDetails.getIntroductoryPriceCycles()String ではなく int を返すようになりました。
  • 追加のパラメータが設定されていなくても、追加のパラメータがあるものとして請求フローが処理されるバグを修正しました。

Google Play Billing Library 2.2.1 リリース(2020-05-20)

Google Play Billing Library のバージョン 2.2.1 がリリースされました。

バグの修正

  • Kotlin 拡張機能が依存する Java Play Billing Library のデフォルト バージョンを更新しました。

Google Play Billing Library 2.2.0 リリースと Unity サポート(2020-03-23)

Google Play Billing Library 2.2.0 には、購入を正しいユーザーに確実に紐付けるための機能が用意されています。こうした変更により、デベロッパー ペイロードに基づいてカスタム ソリューションを構築する必要がなくなります。今回のアップデートの一環として、デベロッパー ペイロード機能のサポートが終了しました。この機能は今後のリリースで削除される予定です。推奨される代替機能などについて詳しくは、デベロッパー ペイロードをご覧ください。

Unity 用 Google Play Billing Library 2

Google Play Billing Library 2 の現在の Java 版と Kotlin 版に加え、Unity と組み合わせて使用するためのライブラリ バージョンがリリースされました。Unity in-app purchase API を使用しているゲーム デベロッパーはアップグレードすることで、Google Play Billing Library 2 のすべての機能を利用できるようになります。また、今後の Google Play Billing Library 最新版へのアップグレードも簡単になります。

詳しくは、Unity で Google Play 請求サービスを使用するをご覧ください。

変更の概要

Google Play Billing Library 2.1.0 リリースと Kotlin 拡張機能 2.1.0 リリース(2019-12-10)

Google Play Billing Library のバージョン 2.1.0 と新しい Kotlin 拡張機能がリリースされました。Google Play Billing Library の Kotlin 拡張機能には、Kotlin での開発に役立つイディオマティックな API が用意されており、より優れた null 安全やコルーチンをサポートしています。コード例については、Google Play Billing Library の使用についての説明をご覧ください。

このバージョンには、以下の変更が含まれています。

変更の概要

  • BillingFlowParams において、setOldSku(String oldSku) のサポートが終了し、setOldSku(String oldSku, String purchaseToken) に置き換えられました。デバイス上の複数のアカウントが同じ SKU を所有している場合のあいまいさを排除するためです。

Google Play Billing Library 2.0.3 リリース(2019-08-05)

Google Play Billing Library のバージョン 2.0.3 がリリースされました。

バグの修正

  • querySkuDetailsAsync() が正しい結果を返さず、失敗してコード DEVELOPER_ERROR を返すことがあるバグを修正しました。

Google Play Billing Library 2.0.2 リリース(2019-07-08)

Google Play Billing Library のバージョン 2.0.2 がリリースされました。このリリースではリファレンス ドキュメントが更新されていますが、ライブラリの機能に変更はありません。

Google Play Billing Library 2.0.1 リリース(2019-06-06)

Google Play Billing Library のバージョン 2.0.1 がリリースされました。このバージョンには、以下の変更が含まれています。

バグの修正

  • 一部のケースでデバッグ メッセージが null で返されていたバグを修正しました。
  • メモリリークに関する潜在的な問題を修正しました。

Google Play Billing Library 2.0 リリース(2019-05-07)

Google Play Billing Library のバージョン 2.0 がリリースされました。このバージョンには、以下の変更が含まれています。

購入は 3 日以内に承認する必要がある

Google Play では、アプリ内またはアプリ外でのアイテム購入をサポートしています。ユーザーがどちらでアイテムを購入したかにかかわらず、一貫した購入エクスペリエンスを Google Play からユーザーに確実に提供するには、ユーザーにエンタイトルメントを付与した後、Google Play Billing Library を介して受信したすべての購入をできるだけ早く承認する必要があります。3 日以内に購入を承認しない場合、ユーザーは自動的に払い戻しを受け、Google Play は購入を取り消します。保留中の取引(バージョン 2.0 の新機能)では、購入ステータスが PURCHASED に移行したときに 3 日間の期間が開始されますが、購入ステータスが PENDING の間は適用されません。

定期購入の場合、新しい購入トークンのある購入はすべて承認する必要があります。つまり初回購入、プランの変更、再登録はすべて承認する必要がありますが、その後の更新を承認する必要はありません。購入に確認が必要かどうかを判断するには、購入の確認フィールドを確認します。

Purchase オブジェクトには、購入が承認されたかどうかを示す isAcknowledged() メソッドが含まれるようになりました。さらに、Google Play Developer API には、Purchases.productsPurchases.subscriptions の確認ブール値が含まれています。購入を承認する際は、すでに承認されているかどうかを確認するためにこれらの方法を必ず使用してください。

次のいずれかの方法で購入を承認できます。

  • 消費アイテムの場合は、クライアント API にある consumeAsync() を使用します。
  • 非消費アイテムの場合は、クライアント API にある acknowledgePurchase() を使用します。
  • Server API では、新しい acknowledge() メソッドも利用できます。

BillingFlowParams.setSku() の削除

以前にサポート対象外となった BillingFlowParams#setSku() メソッドは、このリリースで削除されました。購入フローでアイテムをレンダリングするには、BillingClient.querySkuDetailsAsync() を呼び出して、結果として得られる SkuDetails オブジェクトを BillingFlowParams.Builder.setSkuDetails() に渡します。

コード例については、Google Play Billing Library の使用についての説明をご覧ください。

デベロッパー ペイロードのサポート

Google Play Billing Library のバージョン 2.0 では、購入に添付できる任意の文字列であるデベロッパー ペイロードのサポートが追加されました。デベロッパー ペイロード パラメータを購入に添付することができますが、購入が承認または消費された場合に限られます。これは、購入フローを起動するときにペイロードを指定できる AIDL のデベロッパー ペイロードとは異なります。購入はアプリ外部で開始できるようになったため、この変更により、常にペイロードを購入に追加できるようになりました。

新しいライブラリでペイロードにアクセスするために、Purchase オブジェクトに getDeveloperPayload() メソッドが追加されました。

一貫したオファー

割引 SKU を提供すると Google Play は SKU の元の価格を返すようになり、割引が適用されていることをユーザーに知らせることができます。

SkuDetails には、元の SKU 価格を取得するための 2 つの新しいメソッドがあります。

保留中の取引

Google Play Billing Library のバージョン 2.0 では、エンタイトルメントを付与する前に追加のアクションを必須とする購入をサポートする必要があります。たとえば、ユーザーは実店舗でアプリ内アイテムを現金で購入するよう選択したとします。その場合は、アプリ外部で取引が完了することになります。このシナリオでは、ユーザーが取引を完了した後にのみエンタイトルメントを付与する必要があります。

保留中の購入を有効にするには、アプリの初期化の一環として enablePendingPurchases() を呼び出します。

Purchase.getPurchaseState() を使用して、購入ステータスが PURCHASEDPENDING かを確認します。ステータスが PURCHASED の場合にのみエンタイトルメントを付与するようにしてください。Purchase ステータスが更新されているかどうかを確認する手順は次のとおりです。

  1. アプリの開始時に BillingClient.queryPurchases() を呼び出して、ユーザーに関連付けられた未消費のアイテムのリストを取得します。
  2. 返された Purchase オブジェクトごとに Purchase.getPurchaseState() を呼び出します。
  3. onPurchasesUpdated() メソッドを実装し、Purchase オブジェクトの変更に対応します。

また、Google Play Developer API には Purchases.productsPENDING ステータスが含まれています。保留中の取引はサブスクリプションではサポートされていません。

このリリースでは、新しいリアルタイムのデベロッパー通知タイプである OneTimeProductNotification も導入されています。この通知タイプには、値が ONE_TIME_PRODUCT_PURCHASED または ONE_TIME_PRODUCT_CANCELED のいずれかである単一のメッセージが含まれています。この通知タイプは、現金などのお支払い方法で遅延が関係する購入に対してのみ送信されます。

保留中の購入を承認する場合は、購入ステータスが PENDING ではなく PURCHASED の場合にのみ承認するようにしてください。

API の変更

Google Play Billing Library のバージョン 2.0 には、新しい機能をサポートし、既存の機能を明確にするための API の変更がいくつか含まれています。

consumeAsync

consumeAsync()purchaseToken ではなく ConsumeParams オブジェクトを受け取るようになりました。ConsumeParams には purchaseToken と省略可能なデベロッパー ペイロードが含まれます。

このリリースでは、以前のバージョンの consumeAsync() が削除されました。

queryPurchaseHistoryAsync

混乱を最小限に抑えるために、queryPurchaseHistoryAsync()Purchase オブジェクトではなく PurchaseHistoryRecord を返すようになりました。PurchaseHistoryRecord オブジェクトは Purchase オブジェクトと同じですが、queryPurchaseHistoryAsync() によって返された値のみを反映し、autoRenewingorderIdpackageName フィールドを含みません。返されたデータにはなんの変更もないことにご注意ください。queryPurchaseHistoryAsync() は以前と同じデータを返します。

BillingResult の戻り値

以前は BillingResponse 整数値を返していた API が BillingResult オブジェクトを返すようになりました。BillingResult には BillingResponse 整数と、エラー診断に使用できるデバッグ文字列が含まれています。デバッグ文字列は en-US ロケールを使用し、エンドユーザーには表示されません。

バグの修正

Google Play Billing Library 1.2.2 リリース(2019-03-07)

Google Play Billing Library のバージョン 1.2.2 がリリースされました。このバージョンには、以下の変更が含まれています。

バグの修正

  • バージョン 1.2.1 で発生したスレッドの問題を修正しました。バックグラウンド呼び出しでメインスレッドをブロックしなくなりました。

その他の変更点

  • メインスレッドを使用することをおすすめしますが、バックグラウンド スレッドから Google Play Billing Library をインスタンス化することができるようになりました。
  • ANR が発生する可能性を減らすために、インスタンス化はバックグラウンド スレッドに完全に移行されました。

Play Billing Library 1.2.1 リリース(2019-03-04)

Google Play Billing Library のバージョン 1.2.1 がリリースされました。このバージョンには、以下の変更が含まれています。

主な変更

その他の変更点

  • テストを容易にするために PurchasesResultSkuDetailsResult に公開コンストラクタを追加しました。
  • SkuDetails オブジェクトで新しいメソッド getOriginalJson() を使用できるようになりました。
  • すべての AIDL サービス呼び出しはバックグラウンド スレッドによって処理されるようになりました。

バグの修正

  • NULL のコールバック リスナーがパブリック API に渡されなくなりました。

Google Play Billing Library 1.2 リリース(2018-10-18)

Google Play Billing Library のバージョン 1.2 がリリースされました。このバージョンには、以下の変更が含まれています。

変更の概要

  • Google Play Billing Library は、Android ソフトウェア開発キットのライセンス契約のもとに提供されます。
  • launchPriceChangeConfirmationFlow API が追加されました。これにより、定期購入価格に対する保留中の変更を確認するようユーザーに促します。
  • ユーザーの定期購入をアップグレードまたはダウングレードする場合に、新しい比例配分モード DEFERRED のサポートが追加されました。
  • BillingFlowParams クラス内で setSku()setSkuDetails() で置き換えました。
  • 軽微なバグの修正とコードの最適化を行いました。

価格変更の確認

Google Play Console で購読の価格を変更し、ユーザーがアプリを起動した際に新しい価格を確認して承認できるように表示できるようになりました。

この API を使用するには、定期購入商品の skuDetails を使用して PriceChangeFlowParams オブジェクトを作成し、launchPriceChangeConfirmationFlow() を呼び出します。次のコード スニペットに示すように、PriceChangeConfirmationListener を実装して価格変更確認フローが終了したときに結果を処理してください。

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.
            }
        });

価格変更確認フローに新しい価格情報を含むダイアログが表示され、ユーザーに新しい価格を受け入れるように求めます。このフローは、BillingClient.BillingResponse 型のレスポンス コードを返します。

新しい比例配分モード

ユーザーの定期購入をアップグレードまたはダウングレードする場合は、新しい比例配分モード DEFERRED を使用できます。このモードでは、次回の更新時にユーザーの定期購入を更新します。比例配分モードの設定方法について詳しくは、比例配分モードの設定をご覧ください。

SKU の詳細を設定する新しい方法

BillingFlowParams クラスでの setSku() メソッドが非推奨になりました。この変更により、Google Play 請求サービスのフローを最適化できます。

アプリ内課金クライアントで BillingFlowParams の新しいインスタンスを作成するときは、setSkuDetails() を使用して JSON オブジェクトを直接操作することをおすすめします。以下に示すコード スニペットをご確認ください。

BillingFlowParams Builder クラスでの setSku() メソッドが非推奨になりました。代わりに、次のコード スニペットに示すように、setSkuDetails() メソッドを呼び出してください。setSkuDetails() オブジェクトに渡されるオブジェクトは 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 リリース(2018-05-07)

Google Play Billing Library のバージョン 1.1 がリリースされました。このバージョンには、以下の変更が含まれています。

変更の概要

  • 既存の定期購入をアップグレードまたはダウングレードする際に BillingFlowParams で配分モードを指定するためのサポートを追加しました。
  • BillingFlowParamsreplaceSkusProration ブール値フラグはサポートされなくなりました。代わりに replaceSkusProrationMode を使用してください
  • launchBillingFlow() はレスポンスの失敗に対してコールバックをトリガーするようになりました。

動作の変更

Google Play Billing Library バージョン 1.1 では、次のように動作が変更されました。

デベロッパーが BillingFlowParams クラスの replaceSkusProrationMode を設定できるようになった

ProrationMode は、ユーザーの定期購入をアップグレードまたはダウングレードする際の比例配分の種類に関する詳細を提供します。

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 は次の比例配分モードをサポートしています。

IMMEDIATE_WITH_TIME_PRORATION 切り替えは直ちに有効になり、新しい有効期限が比例配分され、ユーザーへの入金または請求が行われます。これが現在のデフォルトの動作です。
IMMEDIATE_AND_CHARGE_PRORATED_PRICE 切り替えは直ちに有効になりますが、請求期間は変わりません。残りの期間の価格に対する請求が行われます。

: このオプションは定期購入のアップグレードでのみ利用可能です。

IMMEDIATE_WITHOUT_PRORATION 切り替えは直ちに有効になり、新しい価格が次回契約期間に請求されます。請求期間は変わりません。

replaceSkusProrationBillingFlowParams クラスでサポートされなくなった

デベロッパーは、定期購入のアップグレード要求に対して比例配分額を請求するためのブール値フラグを設定できましたが、より詳細な比例配分命令を含む ProrationMode がサポートされるようになったため、このブール値フラグはサポートされなくなります。

launchBillingFlow() がレスポンスの失敗に対してコールバックをトリガーするようになった

Billing Library は常に PurhcasesUpdatedListener コールバックをトリガーし、BillingResponse を非同期で返します。BillingResponse の同期戻り値も保持されます。

バグの修正

  • サービスが切断されると、非同期メソッドの早い段階で正しく終了するようになりました。
  • Builder パラメータ オブジェクトはビルド オブジェクトを変換しなくなりました。
  • 不具合 68087141: launchBillingFlow() はレスポンスの失敗に対してコールバックをトリガーするようになりました。

Google Play Billing Library 1.0 リリース(2017-09-19、発表

Google Play Billing Library のバージョン 1.0 がリリースされました。このバージョンには、以下の変更が含まれています。

重要な変更点

  • ライブラリのマニフェスト内に請求許可を埋め込みました。com.android.vending.BILLING 権限を Android マニフェストに追加する必要はありません。
  • 新しいビルダーが BillingClient.Builder クラスに追加されました。
  • SKU を照会するためのメソッドで使用される SkuDetailsParams クラスのビルダー パターンが導入されました。
  • 整合性のためにいくつかの API メソッドが更新されました(戻り引数の名前と順序は同じ)。

動作の変更

Google Play Billing Library バージョン 1.0 では、次のように動作が変更されました。

BillingClient.Builder クラス

BillingClient.Builder が newBuilder パターンで初期化されるようになりました。

Kotlin

billingClient = BillingClient.newBuilder(context).setListener(this).build()

Java

billingClient = BillingClient.newBuilder(context).setListener(this).build();

launchBillingFlow メソッドが BillingFlowParams クラスを使用して呼び出されるようになった

購入または定期購入の請求フローを開始するには、launchBillingFlow() メソッドが、リクエストに固有のパラメータによって初期化された BillingFlowParams インスタンスを受け取ります。

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());

利用可能なアイテムを照会するための新しい方法

queryPurchaseHistoryAsync() メソッドと querySkuDetailsAsync() メソッドの引数は Builder パターンにラップされました。

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() {...})

以前は便宜上、また API で整合性をとるためにラッパークラスだった結果が、結果コードと SkuDetails オブジェクトのリストで返されるようになりました。

Kotlin

fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)

Java

public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)

onConsumeResponse() メソッドでパラメータの順序が変更された

ConsumeResponseListener インターフェースから返される onConsumeResponse の引数の順序が、API 全体で整合性がとれるように変更されました。

Kotlin

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

Java

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

PurchaseResult オブジェクトのラップ解除

PurchaseResult が、API 全体で整合性がとれるようラップ解除されました。

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

バグの修正

デベロッパー プレビュー 1 リリース(2017-06-12、発表

デベロッパーによるプレビューが開始されました。請求書作成時の開発プロセスを簡素化することを目的としており、デベロッパーはアプリケーション アーキテクチャやナビゲーション構造といった Android アプリ固有のロジックの実装に専念できます。

このライブラリには、Android アプリを Google Play Billing API と統合する際に使用できる便利なクラスと機能がいくつか含まれています。また、このライブラリは、Android インターフェース定義言語(AIDL)サービス上に抽象化レイヤーも提供するため、デベロッパーはアプリと Google Play Billing API 間のインターフェースを定義しやすくなります。