この記事は フリューAdvent Calendar 2018 の12/05分です。
はじめに
こんにちは。ピクトリンク事業部開発部の荒木です。普段はピクトリンクというアプリのAndroid版を開発しています。携帯は、Googleブランドの最新スマートフォンPixel3を使っています。非の打ち所がない良い端末なので、みなさん買いましょう。
今回の記事では、Androidの課金APIである In-app Billing API のバージョンについて書きたいと思います。
In-app Billing API とは
公式ドキュメントは以下です。日本語ドキュメントは情報が古かったので、英語ドキュメントを貼ってあります。2018/12/05現在、日本語ドキュメントの最終更新日は2018/4/25、英語ドキュメントの最終更新日は2018/7/17でした。
https://developer.android.com/google/play/billing/api?hl=en
ひとことで言うと、AndroidアプリでGoogle Play課金を実施するためのAPIです。AIDL(Android Interface Definition Language) と呼ばれるインターフェース定義言語によって定義されるAPIで、 .aidl
ファイルから生成されるJavaのインターフェースによって利用することができます。
In-app Billing API は、 Google SamplesのIabHelper や Play Billing Library のように上手くラップしたものがあり、それらを使う分には基本的に意識する必要はないのですが、バージョンごとに使えるメソッドが異なります。日本語ドキュメントや日本語の記事では単に In-app Billing API version 3 と書かれていることが多いので、一度整理してみようというのがこの記事のモチベーションです。
各バージョンで利用できるメソッド
https://developer.android.com/google/play/billing/billing_reference?hl=en
上記のドキュメントを参考に、In-app Billing API version 3 以降のバージョンについて、各バージョンでどのようなメソッドが利用できるかを説明します。
バージョン | メソッド | 説明 |
3以降 |
isBillingSupported()
|
端末がIn-app Billing APIの特定バージョンに対応しているかを調べるためのメソッドです。 |
3以降 |
getSkuDetails()
|
商品(SKU)の詳細情報を入手できます。 |
3以降 |
getBuyIntent()
|
このメソッドを利用することで、Google Playによる購入フローを開始するための PendingIntent が取得できます。 |
3以降 |
consumePurchase()
|
アプリ内アイテムの消費を実施します。たとえば、ゲームなどで有料のアイテムを消費して効果を得た時にこのメソッドを呼びます。 |
3以降 |
getPurchases()
|
ユーザーが所有する商品(未消費の商品、有効期間内の定期購読)を返します。 |
5以降 |
getBuyIntentToReplaceSkus()
|
定期購入のアップグレード/ダウングレードに利用されるメソッドです。購読したい商品に加えて、購読解除したい商品を指定することで、新しい商品の購読と、古い商品の購読解除を同時に実施します。 |
6以降 |
getBuyIntentExtraParams()
|
getBuyIntent() に追加のパラメータを渡せるメソッドです。getBuyIntentToReplaceSkus() と同様に購読解除したい商品を追加パラメータで指定できるので、実質 getBuyIntentToReplaceSkus() のバージョンアップ版と考えられます。
|
6以降 |
getPurchaseHistory()
|
ユーザーの購入履歴を返します。期限切れの定期購読や、キャンセルされた購入、消費済みの商品も含まれます。 |
7以降 |
isBillingSupportedExtraParams()
|
isBillingSupported() に加えてアプリ課金のタイプについても調べることができるメソッドです。アプリ課金のタイプとして VR の購入フローを指定して、サポートしているかを調べられます。
|
Play Billing Libraryについて
Googleから提供されている課金のライブラリ Play Billing Library と In-app Billing API のバージョンについても言及しておきます。
2018/12/05 現在リリースされている Play Billing Library の最新バージョン 1.2 の課金周りのコードを見てみましょう。
/** Maximum IAP version currently supported. */ private static final int MAX_IAP_VERSION = 8; /** Minimum IAP version currently supported. */ private static final int MIN_IAP_VERSION = 3;
このコードにあるように、Play Billing Library は、現在 In-app Billing API のバージョン3〜8に対応しているようです。現在の最新APIに対応できていると思われます。
さいごに
この記事では、In-app Billing API のバージョンについて書きました。普段ラップされていて意識しない部分ですが、内部のAPIを調べてみると意外と知らなかったパラメータがあったので、興味深かったです。アプリ課金に関する情報は定期的にアップデートされる印象があるので、しっかりとキャッチアップしていきたいと思います。