アプリ内課金の実機テストのワナ
Androidアプリのアプリ内課金(Google Play In-App Billing)を組み込んだアプリを、保有している唯一のAndroid端末(au IS11 Xperia acro)で実機テストする際に私がはまったワナ。
- アプリをβ版で公開しないとテストはできない。
- アプリを公開した後は同一バージョン番号のapkは登録できない
- 開発者アカウントではテストできない。
- テストで使われるのは最初に登録したアカウントのみ
- 追加登録したアカウントをテストで使うには、端末の初期化が必要
- テストアカウントを登録しても、すぐには反映されない
ということで、現在保有している au IS11 は初期化して、課金テスト用のアカウントを登録することになりました。
開発者アカウントと、課金テスト用アカウントを切り替えるのに、いちいち初期化するのは面倒なので、新しい端末を1台調達することに。
選んだのは、au版 Xperia Z1 の SOL23です。(中古で安かったので)
現在は、Xperia 2台体制で、開発テストを行うこととなりました。
以下は、ひっかかったワナの詳細です。
アプリをβ版で公開しないとテストはできない
以前は、アプリを公開しなくても、テストできていたのですが、最近にはβ版でアプリを公開しないと、課金テストできなくなったようです。
アプリ内課金用のアイテムを登録した後、そのアイテムを「有効」にします。
β版をテストする際に、テストできるアカウントを設定しなければいけません。
アプリの「APK」-「ベータ版テスト」タブ-「テスターのリストを管理」から、
「Google グループまたは Google+ コミュニティを追加」で、テスターのグループか、コミュニティを選ぶ必要があります。
(この設定は、β版を公開した後でも、追加できるようです)
それらが完了してから、課金アイテムの購入テストを実装しているapk をβ版として公開します。
アプリを公開した後は同一バージョン番号のapkは登録できない
私は、アプリのバージョン番号を変更するのが面倒なので、リリース時の最初のバージョン番号(1.0.0)を、プロジェクトの最初から付けています。
ところが、一度apkファイルを公開してしまうと、たとえそれがβ版であっても、次に新しい apkファイルと差し替える際に、バージョン番号を変更(更新)しないといけないようです。
テスト用で公開するβ版のapkファイルに、未実装の機能や、デバッグ用の設定が入っている際、バージョン番号をリリース版の最初のバージョン(1.0.0など)に設定してしまっていると、実際のリリース版apkファイルをアップロードする際には、バージョン番号を更新することとなり、公開時のバージョン番号が、いきなり 1.0.1 となってしまったりします。
このアプリで、見事にバージョン番号が最初から 1.0.1で公開しなければいけない羽目に合いました。
https://play.google.com/store/apps/details?id=air.com.gadget_f.TypingTOEIC
開発者アカウントではテストできない
課金テストを行う際には、Google Play Developer Console の「設定」-「アカウントの詳細」-「テスト用のアクセス権がある Gmail アカウント」にテスト用のメールアドレスを記載しておく必要があります。
ただし、ここに開発者アカウントを登録してもテストはできません。
機能実装したアプリでアイテムを購入しようとすると、「出版社はこのアイテムを購入できません」とエラー表示され、テストできません。
開発者として登録しているアカウント以外の、Google アカウントを登録しなおす必要がありました。
テストで使われるのは最初に登録したアカウントのみ
通常、1つのAndroid端末に、複数の Google アカウントを登録して、Google Play にアクセスした場合、左上のボタンからアプリのダウンロードや購入に使用するアカウントを選択できます。
テストアカウントを端末に追加登録し、Google Play アプリで課金テスト用のアカウントを選択した状態にすれば、Google Play でのアイテム購入処理が、そのアカウントになると思っていました。
ところが、制作したアプリで実際にテストしようとしても、「出版社はこのアイテムを購入できません」の表示が消えませんでした。
どうやら、購入テストとして選択されるのは、最初に登録したアカウントのみのようです。
追加登録したアカウントをテストで使うには、端末の初期化が必要
最初に登録したアカウントを、消して、課金テスト用のアカウントだけに設定した場合はどうなるのかと試そうとしたところ、最初のアカウントを消すには、Android 端末の初期化が必要と表示されてしまいました。
テストアカウントを登録しても、すぐには反映されない
Android端末のアカウントを初期化して、課金テスト用のアカウントを登録。
その端末でアプリのβ版をGoogle Play Store からダウンロードし、課金アイテムを購入しようとすると、無事に「出版社はこのアイテムを購入できません」表示は消えました。
しかし、今度は、アプリ内課金の購入表示が、通常の Google Play Store での購入画面と何ら変わりませんでした。
まぁ、大丈夫だろうとアイテムを購入したところ、無事に通常に購入できました。
しかし、ここでも再びワナが。
購入したアイテムの代金が、実際に開発アカウントのGoogle Wallet の表示欄に、売れたアイテムとして表示されているのです。
テスト用アカウントの場合は、課金が発生しないはずなのにです。
課金テスト用のアカウントは、Google Play Developer Console の「設定」-「アカウントの詳細」-「テスト用のアクセス権がある Gmail アカウント」へ登録済みなのですが、反映までに時間がかかるようです。
テスト購入の場合は、購入確認画面で、「これはテスト用の注文です。実際の課金は発生しません」という表記が、アイテムの説明画面に表示されるのが正しい動作です。
この表記がない場合は、アイテムを購入すると、実際に課金されてしまうので注意が必要です。
以上が、アプリ内課金の実機テストをする際に、私が引っかかってしまったワナの数々です。
少しでも、参考になれば幸いです。