【Android開発】Google Playアプリ内課金の実装方法ガイド!【2017年更新】

Pocket
LINEで送る

Google Playアプリ内課金の実装方法を解説していきます。アプリ内課金は、ちょっと難しそうなイメージがありますよね。しかし、Google Playが提供するアプリ内課金の仕様が「Version 2」から「Version 3」に移行したことにより、かなり簡単に実装できるようになりました。

実装するにあたってのコーディング、また複雑な箇所やハマりやすいポイント等を今回は紹介したいと思います。それでは、まずは課金の種類について理解していきましょう。

 

【課金の種類について理解する】

アプリ内課金は複雑そうに見えますが、実はGooglePlayによるアプリ内課金は、主に2つの種類しかないのです。今回は、下記で紹介する『管理対象のアイテム – 非消耗型課金』のアプリ内課金プログラミングを紹介していきます。課金の種類が変わっても基本は同じなので、ご自身のアプリに合わせ実装をしていくと良いでしょう。

 

1. 管理対象のアイテム

この種類は、購入すると一部コンテンツがアンロックされる、広告除去のようなプレミアム機能を提供する「非消耗型課金」と、ゲームで使用するライフで見られるような購入すると消費できる「消費型」の2つがあります。

消費型は、使う度に消費するアイテム形式で、必要時に毎回購入しなければならず、無料で再ダウンロードすることはできません。例えば、ゲーム内通貨、ゲームのライフなど。ポケモンGOのアプリ内通貨、ツムツムのルビーを購入する時に使用する課金形態などです。

非消費型は、一度購入すると永続的に使えるアイテム形式で、1 回のみ購入が必要で、それ以降は使っている googleアカウントに関連付けられているほかのデバイスにも転送できます。例えば、広告の削除、機能のアンロックなど、一度購入すると半永久的に使用できる課金形態。スーパーマリオランのステージアンロックをイメージしてもらえると分かりやすいですね。

厳密には、Google Playのアプリ内課金は『消費型』と『非消費型』を分けていません。実装していく段階で、課金アイテムを消費できるようにするか、永続的に持てるようにするかの違いだけなのです。

今回は種類を分かりやすくするために、あえてiOSのアプリ内課金のような『消費型』と『非消費型』に分けて説明しました。

 

2. 定期購入型のアイテム

一定期間が過ぎたら、自動で課金を更新できる定期購入型課金です。週間、月間、年間などの設定を適用できるほか、自由に期間を設定することができます。また、無料の試用期間等も設定できます。いわゆるサービスに加入したら、退会するまで自動で購入継続されるという形式ですね。例えば、定期配信の購読、NetflixやHuluなどの月額定額サービスなどがイメージしやすいと思います。

 

【アプリ内課金の準備】

 

1. プロジェクトにアプリ内課金を導入する

Untitled

始めに、アプリ内課金をプロジェクトに導入するための環境を整えていきましょう。上記の画像の指示通り、『SDK Manager』を選択しタブを開いて下さい。

 

02

開くと、設定のタブが開きます。『Android SDK ⇒ Android Tools』と進み、画像で示してある『Google Play Billing Library, rev 5』にチェックを入れて下さい。その後、『OK』を選択し、SDKのインストールを完了させて下さい。

完了すると、IInAppBillingService.aidl ファイルが <Android/sdk/extras/google/play_billing/> にインストールされます。ローカルのライブラリから、Android SDKまでのパスを辿りアクセスしてみましょう。IInAppBillingService.aidl ファイルを見つけたら、コピーして下さい。

 

2. IInAppBillingService.aidl ファイルをプロジェクトにペースト

次に、先ほどインストールされた『aidlファイル』をプロジェクトに追加していきます。下記の通りにご自身のアプリプロジェクトに下記順番でディレクトリを作り、aidlファイルをペーストして下さい。

aidlファイルをプロジェクトに含めて、Gradle ツールでプロジェクトをビルドすると、IInAppBillingService.java ファイルが生成されます。正しく生成されたのを確認するために、始めにアプリをビルドします。プロジェクト内の /generated ディレクトリに IInAppBillingService.java というファイルが生成されたことを確認できましたか?生成できていなかった場合は、もう一度正しい順序で行われているかどうか確認をして下さい。

これでアプリ内課金を導入する上での準備は整いました。

 

3. アプリ内課金サンプルファイルから、必要ファイルをコピー&ペースト

下記ディレクトリアクセスし、samples内にある『TrivialDrive』を開きます。

『example』というフォルダは見つかりましたでしょうか?それをクリックし、『Utilフォルダ』にある下記ファイルをアプリ内課金を導入したいご自身のアプリプロジェクトに移動して下さい。

・Base64.java
・Base64DecoderException.java
・IabException.java
・IabHelper.java
・IabResult.java
・Inventory.java
・Purchase.java
・Security.java
・SkuDetails.java

 

【アプリ内課金の実装】

1. アプリのマニフェストを更新する

Google Play アプリを使うには、AndroidManifest.xml ファイルに com.android.vending.BILLING パーミッションを追加しなければいけません。 アプリ内課金パーミッションを宣言していない場合に課金リクエストを送った場合、アプリ内課金のリクエストはエラーを返します。

アプリに必要なパーミッションを付与するには、AndroidManifest.xml ファイルの中に以下の一行を追加してください。

2. 上記ファイルのパッケージ名を全て変更

03

次に、先ほどサンプルプロジェクトから追加した『IabException.java』等のパッケージ名をご自身のプロジェクトのパッケージ名に忘れずに変更して下さい。これを忘れると、ビルドエラーになります。

 

3. Google Play Developer Consoleからライセンスキーを入手する

04

次に、開発者として登録したDeveloer Consoleへアクセスし、『サービスとAPI』にあるライセンスキーをコピーして下さい。開発者登録をしないとライセンスキーを入手できないので、アプリ内課金フレームワークは試すことができません。

 

4. Google Developer Consoleで課金アイテムを登録する

 

Screen Shot 2017-02-07 at 18.20.39

次に、Developer Consoleから『アプリ内アイテム』に進み、新しいアイテムをクリックし、課金アイテムを追加して下さい。課金タイプは『管理対象のアイテム』を設定し、アイテムIDは『ここに課金IDする』を入力する部分に書いていきます。

課金IDはユニークなものにする必要があるため、会社ドメインや自身のドメインなど『com.hoge.item01』のような形が良いと思います。

 

5. アプリ内課金をセットアップ

ActivityのonCreate内に、下記コードを追加していきます。アプリ内課金の接続が正常にされているかどうかをチェックします。また、ユーザーが既に保有しているアイテムを確認するメソッドを実行します。

6. 購入しているアイテムの確認を行う

上記で記載した下記コードで、ユーザーが購入しているアイテムの所有権を確認します。

上記コードを呼ぶと、下記コールバック関数が呼ばれます。Google Developer Consoleで登録したアイテムの課金IDをinventory.getPurchase(“ここに課金ID”)と呼ぶと、mIsPremiumにboolean型で結果が返ってくるので、それに応じてご自身のプロジェクトに合わせて実装して下さい。

 

7. 購入リクエストを送る

次に、下記コードを実行すると記載した課金IDの購入リクエストが送信されます。

 

8. 購入後のコールバック関数を受け取る

購入されると、下記コールバック関数が呼ばれます。ご自身のアプリに合わせて、購入履歴をデータベースに保存など、購入後の処理をして下さい。

 

9. IABHelperの破棄を行う

アクティビティのonDestroyメソッド内でアクティビティが終了した時に、IABHelperのインスタンスを適切に破棄できるよう、下記コードをプロジェクトに追加します。

これで、正常に購入アイテムの保有検索、購入処理、購入後の処理分岐など、アプリ内課金で必要な要素は紹介できたかと思います。

 

【アプリ内課金プログラミングの役立ちTips】

1. 購入アイテムを消費する

開発をしていると、何度も購入処理をしてデバッグをする必要があると思います。その度に、課金IDを登録するのはとても効率が悪いので、下記コードを実行すると購入したものを消費できます。

そうすると、再度その課金IDの購入リクエストを送ることができます。これらを使えば、消費型のアプリ内課金も実装できますね。

 

2. 課金のテストはリリースビルドで行わなければいけない

アプリ内課金のテストをするには、ベータ版もしくはアルファ版のテスターから実施するか、リリースビルドをしてから、リリース用のapkファイルを直接下記のadbコマンドでインストールしないといけません。ADBコマンドをまだインストールしていない方は、インストールしてくださいね。

3. 課金のテストアカウントを用意する

課金リクエストのテストをする場合は、事前に課金で使用するテストアカウントをGoogle Developer Consoleに登録する必要があります。さもないと、高額の請求がきます。テスターとして登録されてあると、『これはテスト用の注文です。課金は発生しません。』と表示があるので、これが表示されていない場合は、テスターとしての設定が上手くいって場合があるので、再確認した方が良いです。

『設定 ⇒ テスターのリスト』から追加して下さい。

 

【まとめ】

Androidのアプリ内課金は『Version 3』になってからかなり簡単に実装できるようになりました。アプリ内課金を学んで実装できれば、アプリのマネタイズ手法に大きな選択肢ができます。難しそうなイメージがありますが、iOSもAndroidもフレームワークが用意されてあるので、それに慣れてさえすれば実装できると思います。

僕が開発している音声ガイドツアーアプリ『Pokke』も、Google Playアプリ内課金フレームワークを使って、開発しています。次は、iOSのアプリ内課金プログラミングについて書いていこうと思います。

プロジェクトの依頼、質問、ご意見などはコンタクトページからお願いします。
この記事がお役に立てましたら、ビットコインの投げ銭をお願いしております。
.
.
.
.
.
.

1990年生まれ、山梨県出身。サンフランシスコ州立大学国際政治経済学部卒。サンフランシスコでは、デザイン会社にて、インターンを経験したことから、テクノロジーと起業に興味を持つ。その後、日本に帰国しIT系商社に入社。サンフランシスコやイスラエルテック系スタートアップの日本市場へのローカライズ業務に従事。1年3ヶ月の勤務を経て退職、プログラミングを学び、音声ツアーガイドアプリ「Pokke」を開発・運営。

Leave a Comment