前置き
この記事はAndroid Developers Blogの「Money made easily with the new Google Play Billing Library」をもとに作成しています。
Android Developers Blog: Money made easily with the new Google Play Billing Library
はじめに
現在、Androidアプリで課金処理を実装するためには「In-app Billing version 3」と呼ばれるAPIを使って実装する必要がありました。
この実装はAIDLと呼ばれるファイルをわざわざextras内の特定ファイルからコピペするなど、他のAndroidの機能実装に比べて少々特殊でした。その上 v3自体のリリースは2013年でそれ以降APIの更新はありませんでした。(いちおうversion 5までは存在するようですが、裏側だけの変化なのかAPIのドキュメントは存在しません)
そんな状況から、よりわかりやすい形でアプリ内課金を実装できることを目的に、新しいアプリ内課金ライブラリである「Play Billing Library」が公開されました。現在はDeveloper Preview 1としてリリースされています。
- Android Developers Blog: Money made easily with the new Google Play Billing Library
- Play Billing Library | Android Developers
明確な変更点
実装方法の変更(AIDL不要、Gradleでの記述)
Support Libraryなどと同様に、build.gradle
のdependenciesに1行追加するだけでOKになりました。もうAIDLファイルをコピペする必要はありません。AndroidManifest.xml
にBILLINGのPermissionを追加することはお忘れなく。
dependencies {
...
compile 'com.android.billingclient:billing:dp-1'
}
Activityのライフサイクルに依存しない作り
これまでのIn-app Billingは購入結果をonActivityResult
で処理する必要がありましたが、Play Billing Libraryでは各購入処理が専用のClientクラスやListerクラスが用意されているため、明示的に課金周りの処理を切り離して実装することができるようになっています。
…と書きつつ、実はまだ実装して試せていない部分もあるのでここの記述は曖昧です。現在はこれらの紹介記事はほとんどないため、下記に照会するTrivalDrive v2のコードを見るのが一番かと思います。
TrivialDrive v2(サンプルアプリ)の登場
Play Billing Libraryの公開に伴い、課金アプリのTrivialDriveのPlay Billing Library対応版であるv2がGoogleSamplesに公開されています。
v2になったことでwearやtv対応もしていますが、基本的にはコアの課金周りの実装はshared-module
モジュール内にて記述されています。
さいごに
Play Billing LibraryはDeveloper Preview 1とあるように、現在正式リリースに向けて絶賛開発中です。IssueTrackerなどへの意見やバグ報告を絶賛募集中とのことなので、もし既存のIn-app Billingで思うところがある方など、どしどし意見を送るのもよいのではないかと思います。