このトピックには、Google Play Billing Library のリリースノートが含まれています。
Google Play Billing Library 7.0.0 リリース(2024-05-14)
Google Play Billing Library と Kotlin 拡張機能のバージョン 7.0.0 がリリースされました。 できます。
変更の概要
分割払いの定期購入をサポートする API を追加しました。
ProductDetails.InstallmentPlanDetails
を追加しました 。この API アプリが分割払いプランとそのコミットメントの設定を識別するのに役立ちます 関連情報をユーザーに提供します。詳しくは、 定期購入の分割払いガイドをご参照ください。
PendingPurchasesParams
を追加しました およびBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
BillingClient.Builder.enablePendingPurchases()
の後継機能、 今回のリリースでは 非推奨となっています- サポートが終了した
enablePendingPurchases()
は、enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
。
- サポートが終了した
定期購入プリペイド プランの保留中の取引をサポートする API を追加しました。
PendingPurchasesParams.Builder.enablePrepaidPlans()
を使用する -BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
を使用して、定期購入のプリペイド プランの保留中の取引を有効にします。追加する場合 アプリが定期購入を適切に管理していることを確認してください 実現します。詳しくは、 保留中の購入に関するガイドをご覧ください。Purchase.PendingPurchaseUpdate
を追加しました およびPurchase.getPendingPurchaseUpdate()
保留中のチャージの取得、または既存アカウントへのアップグレードまたはダウングレード 。
BillingClient.Builder.enableAlternativeBilling()
を削除しました。AlternativeBillingListener
, およびAlternativeChoiceDetails
。- デベロッパーは
BillingClient.Builder.enableUserChoiceBilling()
参加者:UserChoiceBillingListener
およびUserChoiceDetails
リスナー コールバック内で指定してください。
- デベロッパーは
BillingFlowParams.ProrationMode
を削除しました。BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, およびBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
。- デベロッパーは
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
参加者:BillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
してください。 BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
。BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
。
- デベロッパーは
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
を削除しました。- デベロッパーは
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
を使用する必要があります。 してください。
- デベロッパーは
BillingClient.queryPurchaseHistoryAsync()
は非推奨となっており、今後のリリースで削除される予定です。開発者は 代わりに次の代替手段を使用してください。- 確認済みの購入と保留中の購入: 使用
BillingClient.queryPurchasesAsync()
アクティブな購入をフェッチします - 消費された購入: デベロッパーは消費された購入を追跡する必要があります。 独自のサーバーを作成できます
- キャンセルされた購入: 取り消し済みの購入 デベロッパー API です。
- 詳しくは、 購入履歴をクエリする
- 確認済みの購入と保留中の購入: 使用
BillingFlowParams.ProductDetailsParams.setOfferToken()
デベロッパーが空のofferToken
を指定すると、例外がスローされるようになりました。minSdkVersion
を 21 に、targetSdkVersion
を 34 に更新しました。
Google Play Billing Library 6.2.1 リリース(2024-04-16)
Google Play Billing Library と Kotlin 拡張機能のバージョン 6.2.1 がリリースされました。 できます。
変更の概要
- ダイアログの完了時に特定のケースで
AlternativeBillingOnlyInformationDialogListener
が呼び出されない可能性があるBillingClient.showAlternativeBillingOnlyInformationDialog()
のバグを修正しました。
Google Play Billing Library 6.2.0 リリース(2024-03-06)
Google Play Billing Library と Kotlin 拡張機能のバージョン 6.2.0 がリリースされました。 できます。
変更の概要
- 外部提案をサポートする API を追加しました
<ph type="x-smartling-placeholder">
- </ph>
BillingClient.Builder.enableExternalOffer()
を追加しました 外部提案を提供できるようにしますBillingClient.isExternalOfferAvailableAsync()
を追加しました を使用して、外部提案機能を提供できるかどうかをチェックします。BillingClient.showExternalOfferInformationDialog()
を追加しました ユーザーをアプリ外に誘導する前に、情報ダイアログを表示する。- 外部提案を通じて行われた取引を報告するために必要なペイロードを作成する
BillingClient.createExternalOfferReportingDetailsAsync()
を追加しました。
Google Play Billing Library 6.1.0 リリース(2023-11-14)
Google Play Billing Library と Kotlin 拡張機能のバージョン 6.1.0 がリリースされました。
変更の概要
- 「代替の課金システムのみ(ユーザー選択型ではない)」をサポートする API を追加しました
- 「代替の課金システムのみ」を提供する機能を有効にする
BillingClient.Builder.enableAlternativeBillingOnly()
を追加しました。 - 「代替の課金システムのみ」の利用可否を確認する
BillingClient.isAlternativeBillingOnlyAvailableAsync()
を追加しました。 - 「代替の課金システムのみ」が使用されている場合にユーザーに通知する情報ダイアログを表示する
BillingClient.showAlternativeBillingOnlyInformationDialog()
を追加しました。 - 「代替の課金システムのみ」を通じて行われた取引を報告するために必要なペイロードを作成する
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
を追加しました。
- 「代替の課金システムのみ」を提供する機能を有効にする
- ユーザー選択型決済の API を更新しました
- 非推奨となった AlternativeBillingListener に代わる
UserChoiceBillingListener
を追加しました。 - 非推奨となった
AlternativeChoiceDetails
に代わるUserChoiceDetails
を追加しました。 - 非推奨となった
BillingClient.Builder.enableAlternativeBilling()
に代わるBillingClient.Builder.enableUserChoiceBilling()
を追加しました。
- 非推奨となった AlternativeBillingListener に代わる
- Google Play の国を取得する
BillingClient.getBillingConfigAsync()
を追加しました。
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_UNAVAILABLE
とSERVICE_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 がリリースされました。
変更の概要
- 韓国のユーザー向けにモバイル / タブレットでの代替の課金システムのフローをサポートするクラスを追加しました。
- 起点となったサブスクリプションの外部取引 ID を指定する
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
メソッドを追加しました。 - 韓国のユーザーが代替の課金オプションを選択できる
BillingClient.Builder.enableAlternativeBilling()
メソッドを追加しました。
Google Play Billing Library 5.1 リリース(2022-10-31)
Google Play Billing Library と Kotlin 拡張機能のバージョン 5.1.0 がリリースされました。
このバージョンには、以下の変更が含まれています。
変更の概要
- 特典 ID を取得するための
ProductDetails.SubscriptionOfferDetails.getOfferId()
メソッドを追加しました。 - 基本プラン ID を取得するための
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
メソッドを追加しました。 targetSdkVersion
を 31 に更新しました。
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 がリリースされました。
このバージョンには、以下の変更が含まれています。
変更の概要
- 定期購入の支払い不承認の処理に役立つ
BillingClient.showInAppMessages()
を追加しました。定期購入の支払い不承認の処理にアプリ内メッセージングを使用する方法について詳しくは、支払い不承認の処理に関する説明をご覧ください。
Google Play Billing Library 4.0 リリース(2021-05-18)
Google Play Billing Library と Kotlin 拡張機能のバージョン 4.0.0 がリリースされました。
変更の概要
今後のリリースで削除される予定の
BillingClient.queryPurchases()
の代わりとして、BillingClient.queryPurchasesAsync()
を追加しました。定期購入の新しい交換モードである
IMMEDIATE_AND_CHARGE_FULL_PRICE
を追加しました。Play Billing Library の接続状態を取得する
BillingClient.getConnectionState()
メソッドを追加しました。Javadoc と実装を更新して、メソッドを呼び出せるスレッドと、投稿されるスレッドの結果を示すようにしました。
定期購入の更新を開始する新しい方法として、
BillingFlowParams.Builder.setSubscriptionUpdateParams()
を追加しました。これは、削除されたBillingFlowParams#getReplaceSkusProrationMode
、BillingFlowParams#getOldSkuPurchaseToken
、BillingFlowParams#getOldSku
、BillingFlowParams.Builder#setReplaceSkusProrationMode
、BillingFlowParams.Builder#setOldSku
に代わるものです。Purchase.getQuantity()
とPurchaseHistoryRecord.getQuantity()
を追加しました。Purchase#getSkus()
とPurchaseHistoryRecord#getSkus()
を追加しました。これらは、削除されたPurchase#getSku
とPurchaseHistoryRecord#getSku
に代わるものです。BillingFlowParams#getSku
、BillingFlowParams#getSkuDetails
、BillingFlowParams#getSkuType
を削除しました。
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(Java)
AcknowledgePurchaseParams
のsetDeveloperPayload()
メソッドとgetDeveloperPayload()
メソッドのサポートが終了しました。ConsumeParams
のsetDeveloperPayload()
メソッドとgetDeveloperPayload()
メソッドのサポートが終了しました。BillingFlowParams
のsetAccountId()
の名前がsetObfuscatedAccountId()
に変更されました。また、フィールドの文字数の制限(64 文字)と、個人を特定できる情報(PII)の設定を禁止する制限がドキュメントに記載されました。setAccountId()
のサポートは終了しました。今後のライブラリ バージョンで削除される予定です。BillingFlowParams
に、setObfuscatedAccountId()
と同じように機能するsetObfuscatedProfileId()
が追加されました。詳しくは、デベロッパー ペイロードのアップデートと代替機能についての説明をご覧ください。Purchase
にgetAccountIdentifiers()
メソッドが追加されました。このメソッドは、BillingFlowParams
に設定された、難読化されたアカウント識別子を返します。- 特典 SKU のサポート終了の一環として、
BillingClient
のloadRewardedSku()
メソッドのサポートが終了しました。サポート終了に関する詳細については、Google Play Console ヘルプセンターをご覧ください。
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.products
と Purchases.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 つの新しいメソッドがあります。
getOriginalPriceAmountMicros()
- 割引前の SKU のフォーマットされていない元の価格を返します。getOriginalPrice()
- 追加の通貨形式で元の価格を返します。
保留中の取引
Google Play Billing Library のバージョン 2.0 では、エンタイトルメントを付与する前に追加のアクションを必須とする購入をサポートする必要があります。たとえば、ユーザーは実店舗でアプリ内アイテムを現金で購入するよう選択したとします。その場合は、アプリ外部で取引が完了することになります。このシナリオでは、ユーザーが取引を完了した後にのみエンタイトルメントを付与する必要があります。
保留中の購入を有効にするには、アプリの初期化の一環として enablePendingPurchases()
を呼び出します。
Purchase.getPurchaseState()
を使用して、購入ステータスが PURCHASED
か PENDING
かを確認します。ステータスが PURCHASED
の場合にのみエンタイトルメントを付与するようにしてください。Purchase
ステータスが更新されているかどうかを確認する手順は次のとおりです。
- アプリの開始時に
BillingClient.queryPurchases()
を呼び出して、ユーザーに関連付けられた未消費のアイテムのリストを取得します。 - 返された
Purchase
オブジェクトごとにPurchase.getPurchaseState()
を呼び出します。 onPurchasesUpdated()
メソッドを実装し、Purchase
オブジェクトの変更に対応します。
また、Google Play Developer API には Purchases.products
の PENDING
ステータスが含まれています。保留中の取引はサブスクリプションではサポートされていません。
このリリースでは、新しいリアルタイムのデベロッパー通知タイプである 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()
によって返された値のみを反映し、autoRenewing
、orderId
、packageName
フィールドを含みません。返されたデータにはなんの変更もないことにご注意ください。queryPurchaseHistoryAsync()
は以前と同じデータを返します。
BillingResult の戻り値
以前は BillingResponse
整数値を返していた API が BillingResult
オブジェクトを返すようになりました。BillingResult
には BillingResponse
整数と、エラー診断に使用できるデバッグ文字列が含まれています。デバッグ文字列は en-US ロケールを使用し、エンドユーザーには表示されません。
バグの修正
SkuDetails.getIntroductoryPriceAmountMicros()
がString
ではなくlong
を返すようになりました。
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 がリリースされました。このバージョンには、以下の変更が含まれています。
主な変更
- 特典アイテムのサポートを追加しました。収益化オプションについて詳しくは、特典アイテム機能の追加をご覧ください。
その他の変更点
- テストを容易にするために
PurchasesResult
とSkuDetailsResult
に公開コンストラクタを追加しました。 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
で配分モードを指定するためのサポートを追加しました。 BillingFlowParams
のreplaceSkusProration
ブール値フラグはサポートされなくなりました。代わりに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 |
切り替えは直ちに有効になり、新しい価格が次回契約期間に請求されます。請求期間は変わりません。 |
replaceSkusProration
が BillingFlowParams
クラスでサポートされなくなった
デベロッパーは、定期購入のアップグレード要求に対して比例配分額を請求するためのブール値フラグを設定できましたが、より詳細な比例配分命令を含む 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)
バグの修正
- PURCHASES_UPDATED バンドルに応答コードがない
- デバイスが回転中に発生する ProxyBillingActivity と PurchasesUpdatedListener の問題を修正
デベロッパー プレビュー 1 リリース(2017-06-12、発表)
デベロッパーによるプレビューが開始されました。請求書作成時の開発プロセスを簡素化することを目的としており、デベロッパーはアプリケーション アーキテクチャやナビゲーション構造といった Android アプリ固有のロジックの実装に専念できます。
このライブラリには、Android アプリを Google Play Billing API と統合する際に使用できる便利なクラスと機能がいくつか含まれています。また、このライブラリは、Android インターフェース定義言語(AIDL)サービス上に抽象化レイヤーも提供するため、デベロッパーはアプリと Google Play Billing API 間のインターフェースを定義しやすくなります。