【はじめてのAndroidアプリ開発】寄付機能の体験(テスト課金&実課金)


【はじめてのAndroidアプリ開発】寄付機能の体験(テスト課金&実課金)

アプリ開発の重点項目に「アプリの収益化」を掲げている方も多いと思います。 しかし、開発初期から収益を得ようとするのは、なかなか難しいもの。

そんな時、アプリに「寄付」機能があるとアプリの収益化を手伝ってくれるかもしれません。

テスト課金&実課金の練習にもなりますので、アプリの収益化で悩まれている方は参考にしてみてください。

【今回作成するアプリ Google Play(Beta版)

★本稿はこんな方に役立ちます★

  • Android アプリ開発初心者
  • 参考書を開いて、フリーズした方
  • アプリの収益化を考えてる方
  • アプリ内に寄付機能を設定したい方
  • サンプルアプリをアレンジ、応用したい方
  • テスト課金および実課金を体験したい方

★今回使用する環境等★

  • Android Studio/ 3.4
  • エミュレーター/ Android 9 (Pie) API 28
  • プログラミング言語/ Java
  • 開発ベースアプリ/ TrivialDrive_v2(Apache 2.0)
目次
  1. 【はじめてのAndroidアプリ開発】寄付機能の体験(テスト課金&実課金)
  2. 寄付機能の体験フロー
  3. 寄付機能の様子
  4. 寄付機能付きアプリの作成
  5. サンプルアプリのプログラムをダウンロード
  6. サンプルアプリの設定を変更
  7. サンプルアプリのレイアウトを変更
  8. 署名付きAPKファイルの出力
  9. アプリを Google Play Console にアップロード
  10. 寄付機能付きアプリでテスト課金および実際に課金する様子
  11. テスト課金と実課金
  12. テスト課金
  13. 実際に課金
  14. 実際に課金した後の Google Play Console の様子
  15. まとめ

【はじめてのAndroidアプリ開発】寄付機能の体験(テスト課金&実課金)

寄付機能の体験フロー

image

本来であれば Android 公式ドキュメントに従って課金機能を実装していけばいいのですが、この工程、Android初級者、プログラミング初心者にとっては退屈。そこで今回は、Androidから公式サンプルでリリースされている 「TrivialDrive_v2」 という課金アプリを元に、手っ取り早く寄付機能を体験していきたいと思います。

今回の寄付機能付きアプリを作成する大まかな流れ

  • サンプルアプリのプログラムをダウンロード
  • サンプルアプリの設定を変更
  • サンプルアプリのレイアウトを変更
  • APKファイルの出力
  • アプリを Google Play Console にアップロード
  • 寄付機能付きアプリのリリース

【おおよその作成時間】 2時間

サンプルアプリを利用するデメリット

今回利用するサンプルアプリ 「TrivialDrive_v2」 は、簡単に課金機能を利用できるものの、モバイル以外のウェアラブルやテレビなどに対応するプログラムも含まれているため、ややコードが複雑。

そのためチョットとしたレイアウトの変更でもバグの原因に。 またサンプルアプリ内のプログラムでセキュリティ設定が行われているため、 Android Studio から実機テストをしようと思っても設定が難しく、疲れます。。。 今回については、 Android Studio 上で実機テストを行わず、作成したアプリのファイルを Google Play Console にアップしてテストしてみました。

以上のことから今回紹介する寄付機能を実際のアプリに加えようと思うと、 Java や Android Studio の基礎知識が必要ということをご理解ください。またあくまで本チュートリアルは、課金機能を気軽に体験いただき、「Android アプリ開発すれば儲かるかも!?」 というモチベーションUPのために用意されたものになります。

寄付機能の様子

今回は作成した寄付機能付きアプリをテスト課金と実課金、二つのモードで使ってみました。サンプルアプリを利用しているとはいえ、自分で作ったアプリで実課金が成功すると結構嬉しいです。 なんかいける気がします。

自分でも寄付機能付きアプリを作ってみようとお考えの方、動画と以下のテキストを参考にしてみるとご自身でもアプリをリリースできるでしょう。少し長いですが、頑張ってお付き合いいただければ幸いです。

寄付機能付きアプリの作成

サンプルアプリのプログラムをダウンロード

image

まず今回利用するベースアプリの TrivialDrive_v2(Apatch 2.0) をダウンロードします。下記の GitHub リンクに移動し、 Download ZIP ボタンをクリック。

https://github.com/googlesamples/android-play-billing

image

ダウンロードされた圧縮フォルダを解凍し、解凍したプロジェクト・フォルダを任意の場所に移動します。今回は「寄付アプリ」 というフォルダを作成して、その中にダウンロードしたプロジェクトフォルダを丸ごと移動しました。

image

準備できたサンプルアプリを起動するために Android Studio を起動し、「File → Open」 もしくは 「Open an existing Android Studio」 を選択。

image

オープンするポイントは、上図のようにダウンロードした android-play-billing-master 内の TrivialDrive_v2 を左クリックし、 OKボタンをクリック。

image

Android Studio がファイルを読み込んでいく過程で、「Gradle のバージョンが最新ではない」と上図のようなポップ(Android Gradle Plugin Update Recommended)が表示されると思います。今回は GitHub で公開されている Gradle そのままの状態で利用していきたいと思いますので、真ん中の「Remind me tomorrow」 を選択します。

image

ファイルの読み込みが正常に完了すると、上図のように Gradle が安定すると思います。 通常であればここでエミュレーターを起動し、アプリの様子を確認するところですが、今回のサンプルアプリはセキュリティー設定が行われているため、デフォルトの状態ではエミュレーター及び実機でプログラムを動かすことはできません。専用のキー設定を行えばいいのですが、説明が長くなりますので今回は割愛させていただきました。

次は Android Studio に取り込んだサンプルアプリのプログラムを編集していきます。

サンプルアプリの設定を変更

TrivialDrive_v2 のマニュアルに書かれている設定を行っていきます。

image

まずは APP_ID の変更を行うべく、プロジェクトレベルの build.gradle を編集します。 Android Studio の左サイドバーからプロジェクトレベルの build.gradle を選択し、 38行目にある APP_ID を任意の値に変更。

APP_ID を変更すると、右上のところに SYNC NOW と表示されますので、左クリックして Gradle を再読み込みします。 Gradle の再読み込みが完了したことを確認して、次のステップに進みましょう。

image

次は Google Play Console で課金機能を利用するために、キー認証の設定をアプリに行う必要があります。編集するファイルは、 「BillingManager.java」 で 上図のように shared-module 内にファイルが存在します。

image

Google Play Console にログインして、 CREATE APPLICATION !

Google Play Console の登録がまだの方は https://play.google.com/apps/publish/ にアクセスして登録しておきましょう($25)。

image

Google Play に登録するタイトルを記述して、 CREATEボタン。今回タイトルは 「寄付機能付きアプリのテスト」 としました。

image

CREATE ボタンを押すとページが自動更新されて、アプリの説明などを登録するページが開きます。 *アスタリスク がついているところが必須項目になりますので、上から順番に埋めていきます。

画像も必要になってきます。とりあえずの画像が必要な方は、以下のリンクよりダウンロードしてご利用ください。

一通りのアプリ情報が入力できたら、 SAVE DRAFT。今回 Google Play Console を開いた目的は、キーの取得でしたね。キーの取得は、左サイドバーの Services&APIs から取得できます。

image

Services&APIs を開くと画面上部に必要なキーデータが書かれています。すごく長いランダムな文字列ですが、こちらをコピー。

image

コピーしたキーデータを上図のように BillingManager 内に貼り付け。

次はアプリ内の課金アイテムを管理するために、プロダクト ID を設定していきます。

image

まず TrivialDrive_v2 のプロダクト ID を確認。今回は一回のみ購入を許可している SKU_PREMIUM と月額商品設定している SKU_GOLD_MONTHLY のプロパティを利用して、課金アイテムを管理していきたいと思います。 上図のように SKU_PREMIUM と SKU_GOLD_MONTHLY の値を適当に変更。今回は

  • SKU_PREMIUM を donate1
  • SKU_GOLD_MONTHLY を donate_monthly

としました。

なおプロジェクト内のどこにプロダクト ID の管理ファイルがあるかというのは Android Studio の検索機能を使うとスムーズです。

image

Android Studio の検索は、シフトキーを2回もしくは画面右上にある 🔍 マークを利用すると検索可能。 今回の場合であれば検索画面を開いて「gold_monthly」 と検索すれば該当のファイルがヒットします(上図参照)。

基本的には以上でアプリ内のプログラムは稼働可能ですが、アプリのタイトルやボタンの表記などがデフォルトのままでは雰囲気が出ません。 下記のようにアプリ内の文字列を編集してみました。

image

strings.xml 編集後のコード

<?xml version="1.0" encoding="utf-8"?>
<!--
   Copyright 2012 Google Inc. All rights reserved.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<resources>
    <string name="app_name">マイ寄付機能</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">マイ寄付機能</string>

    <string name="alert_no_gas">Oh, no! You are out of gas! Try buying some!</string>
    <string name="alert_drove">Vroooom, you drove a few miles.</string>
    <string name="alert_fill_gas">You filled &#188; tank. Your tank is now %1$d/4 full!</string>
    <string name="alert_error_consuming">Error while consuming: %1$s</string>
    <string name="alert_already_purchased">既にご寄付頂いております。よろしければマンスリー・プランに変更頂ければ助かります💓</string>

    <string name="error_no_skus">We didn\'t find any SKUs to display&#8230; Check your internet
        connection and make sure your Google Developer Console was setup correctly.</string>
    <string name="error_billing_unavailable">Billing unavailable. Make sure your Google Play app
        is setup correctly</string>
    <string name="error_billing_default">Billing unavailable. Please check your device.</string>

    <string name="button_drive">Drive</string>
    <string name="button_purchase">寄付</string>
    <string name="button_buy">寄付する</string>
    <string name="button_own">寄付済み</string>
    <string name="button_update">Update</string>
    <string name="button_change">Change</string>
    <string name="button_full_tank">Full tank</string>
    <string name="toast_full_tank">Your tank is full, please use some gas before buying
        more.</string>

    <string name="header_inapp">One-time deals</string>
    <string name="header_subscriptions">Subscriptions</string>

    <string name="content_description_app_loading_image">App loading image</string>
    <string name="content_description_title_image">80\'s Video Game Style Car Logo</string>
    <string name="content_desc_gas_gauge_indicator">Gas gauge indicator</string>
    <string name="content_desc_free_vs_premium_indicator">Free or Premium Image Indicator</string>
</resources>

サンプルアプリのレイアウトを変更

image

アプリ内の文字列の変更に合わせて、アプリのトップ画面の変更も行っておきます。デフォルトの状態であれば上図のように画像やボタンが表示。

画面レイアウトの設定ファイル: activity_game_play.xml

素人目で考えるといらない画像やボタンを削除すれば OK と考えますよね。私、試しました。しかし、アプリは起動せずに落ちます。理由は、ここで設定している画像やボタンは他のプログラムと関係しているため。試しに Android Studio や GitHub の検索機能で gas_gauge としてみて下さい。

gas_gaige に関するファイルは、 XML で 7つ、 Java で 3つ見つかります。つまり activity_game_play.xml 内のレイアウト部品、残しておかないといけない、もしくは関係するプログラムを編集しないといけない、という 2択になりますね。

今回は手っ取り早く寄付機能を体験したかったので、レイアウト部品のコードを残しつつ、見た目は見えないようにコードを編集してみました。

image

部品コードを残しつつ画面上から文字や画像を消すには、

android:visibility="invisible"

のコードを追加すればOK。今回は、タイトル画像やガソリンメーターの画像、 DRIVE ボタンの非表示にしました。

activity_game_play.xml 編集後のコード

<?xml version="1.0" encoding="utf-8"?>
<!--
   Copyright 2017 Google Inc. All rights reserved.
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
      http://www.apache.org/licenses/LICENSE-2.0
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/loading_indicator"/>

    <LinearLayout
        android:id="@id/screen_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/title_margin"
            android:contentDescription="@string/content_description_title_image"
            android:src="@drawable/title"
            android:visibility="invisible" />

        <ImageView
            android:id="@id/gas_gauge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/image_margin"
            android:contentDescription="@string/content_desc_gas_gauge_indicator"
            android:visibility="invisible"
            android:src="@drawable/gas4"/>

        <ImageView
            android:id="@id/free_or_premium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/image_margin"
            android:contentDescription="@string/content_desc_free_vs_premium_indicator"
            android:src="@drawable/free" />


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAlignment="center"
                android:text="アプリ開発のご支援 、\n 何卒、よろしくお願い申し上げます"/>

            <Button
                android:id="@id/button_purchase"
                style="@style/ButtonStyle"
                android:layout_gravity="center"
                android:layout_marginTop="@dimen/double_padding"
                android:text="@string/button_purchase" />

            <Button
                android:id="@id/button_drive"
                style="@style/DriveButtonStyle"
                android:visibility="invisible"
                android:text="@string/button_drive"/>
        </LinearLayout>

    </LinearLayout>
</FrameLayout>

image

寄付っぽいイメージを作るために車のマークも変更してみたいと思います。

画像クリックで拡大

まず車のマークの画像データですが、レイアウトファイル activity_game_play.xml を確認すると、上図のように android:src="@drawable/free" というコード設定されている事が分かります。この free という画像を変更するとよさそうですね。今回は以下のような画像を用意しました。

画像クリックで free.png ダウンロード可(要ファイル名変更)

image

そして新しく用意した free.png ファイルをコピーして、 Android Studio 上の free.png で右クリック、 paste で上図のように画像が切り替わると思います。

image

ついでにデフォルトでセットされているアイテム(商品)の画像も変えていきましょう。

image

今回のアプリでは、消費アイテムの画像を gas_icon や gold_icon、 premium_icon としてセットされています。これらの画像データを変更すればOKということですが、 gas_icon など画像データは複数枚存在。一つずつ画像データを用意するのは面倒なので、アイコン一括ジェネレーターを使ってみました。

【Android Studio アイコンジェネレーター】

https://romannurik.github.io/AndroidAssetStudio/index.html

【寄付一回用の画像】

【毎月寄付用の画像】

上記2枚の画像を Android Asset Studio にアップロードしてアイコンファイルを作成します。

image

まずはAndroid Asset Studio にアクセスして Launcher icon generator を選択。

image

先ほどダウンロードした画像をアップロードして、名称を Android Studio と同じものに合わせます(上図参照)。

  • 寄付一回用の画像 premium_icon
  • 毎月寄付用の画像 gold_icon

アイコンのレイアウトが整ったら画面右上にあるダウンロードボタンを押して、編集した画像データをダウンロード&解凍。

image

次は新しく作成したアイコンの画像データを Android Studio に設定していくわけですが、今回は TrivialDrive_v2 というテンプレートを利用しているため、一括で画像データをアップロードすることが容易ではありません。そのため各サイズのアイコンデータを手作業で Android Studio にセットしていきます。

既存のアイコンデータが保存されているところを確認すべく、変更したいアイコンのファイル名のところで右クリックし、Show in Files を選択。

image

既存のアイコンファイルが保存されているところを確認できたら、そこに先ほどダウンロードしたアイコンファイルをドラッグ&ドロップし、上書き保存していきます。この時、同じサイズのアイコンが保存されるように、ディレクトリを間違わないようにドラッグ&ドロップしていきましょう。

image

既存のアイコンフォルダをすべて確認し、アイコン画像を置き換えます。

image

一通り アイコンファイルの置き換えが完了したら、 Android Studio でアイコンファイルをダブルクリックし、画像が置き換わったことを確認。

デザイン面については他にも色々変更したいところがありますが、今回はこのぐらいにして寄付機能が実際に動くかテストしていきたいと思います。

署名付きAPKファイルの出力

Android Studio 上で編集したサンプルアプリを実際に利用するためには、 Google Play Console に署名(キー)付き APK ファイルをアップロードする必要があります。以下に 署名付き APK ファイルの作成手順を紹介していきます。

画像クリックで拡大

まずは Android Studio のツールバー内にある 「Build」 を左クリックし、 Generate Signed Bundle / APK... を選択。

image

APK を選択し、NEXT。

image

Module 欄を mobile に合わせて、 Create New をクリック。キーを作成していきます。

image

キーを保存する場所を選択するために、フォルダマークをクリック。

image

今回編集している TrivialDrive_v2 フォルダを選択し、キーの名称を keystore にセット。この保存先とキーのファイル名は、予め TrivialDrive_v2 内のプログラムで設定されています。

image

あとは上図のようにパスワードやキーの名称、それから開発者の情報を入力して、 OKをクリック。

image

入力した内容を確認して NEXT ボタン。

image

Build の形式を release 、それからキー認証のバージョンを V1、V2 両方にチェックを入れ Finish。

image

2、30秒ほどすると APK ファイルが作成されます。作成された APK ファイルは、 Android Studio 画面右下の locate をクリックすると、 APK が入っている release フォルダに移動。

image

無事に APK ファイルが作成されたわけですが、アプリをアップロードした後にバグが発見されることもよくあります。バグを修正するたびに APK ファイルを作成し直して、 Google Play Console にアップロード。つまり頻繁に APK ファイルを作成する可能性がありますので、自分でプロジェクトファイルや APK ファイルを 管理できるように注意しておきましょう。

アプリを Google Play Console にアップロード

image

Google Play Console の画面に戻って、左サイドバーの App releases をクリック。 すると公開するアプリのレベルを選択できるわけですが、 TrivialDrive_v2 のマニュアルにはアルファ版(Closed track) でリリースしてくださいと書かれています。どういうわけか私の場合はアルファ版ではうまくいきませんでしたので、ベータ版で公開手順を進めていきます。

image

アプリの公開手順については商品設定以外特別なことはありませんので、画像や動画を参考に進めていってください。

image

image

ここで作成した APK ファイルをアップロードします。

image

APK ファイルアップロード中。

image

APK ファイルの設定が完了すると、左サイドバーの APP releases 横に緑色のチェックマークが入ります。アプリの公開にはあと二項目チェックを入れればいいので、 Content rating と Pricing & distribution の項目を埋めていきます。この辺りの手順は特別なことは行いませんので、様子を確認してみたい方は YouTube を参考にしてみてください

image

アプリリリースの準備が整ったら、あとは寄付してもらうための課金設定を行えば OK。 左サイドバー内にある In-app products 内にある Managed products を選択。 そして CREATE MANAGED PRODUCT をクリック。

画像クリックで拡大

CREATE MANAGED PRODUCT をクリックすると、登録する商品の ID(Product ID)が求められます。この ID は、 Android Studio で編集した ID と同じものを入力する必要が。Managed products の項目では、単発的な商品を管理できますので、1回寄付してもらうための ID、 donate1 をセットします。

image

ID の設定が完了したら、あとは一回寄付してもらうための金額の設定や説明書などを記述していきます。

image

1回の寄付設定が完了したら、 次は毎月寄付してもらうための課金設定を行っていきます。毎月の課金を管理するには、 In-app products 内の Subscriptions定期購読 を選択。

画像クリックで拡大

こちらも ID のセットから行なっていきますので、 Android Studio でセットした毎月寄付専用の ID を引用します。

image

ID のセットが完了したら、毎月頂く金額を設定。今回は、無料期間(Free trial period)も 7日間設定しました。

以上で寄付してもらうための課金設定は完了なので、 後はアプリをリリースしていく手順を踏んでいきます。

【ベータ版でリリースしていく様子】

image

image

image

image

image

image

一通りの公開手順が完了したら、 アプリ名の下に Pending ・・・ と表示。 公開するタイミングにもよると思いますが、平日の日中であればに30分ぐらいで公開されました。欧米時間の夜間になると、2、 3時間かかったように思いますね。

Pending... が終わり、アプリがベータ版で公開された実際の様子は以下のようになります。

【公開完了後の Google Play Console 画面】

image

【ベータ版で公開した場合の Google Play の画面】

image

【ベータ版のアプリをダウンロードする様子】

image

寄付機能付きアプリでテスト課金および実際に課金する様子

テスト課金と実課金

今回作成した寄付機能付きアプリを体験しようと思った時、 Google Play Consple に登録している Google アカウントによって課金が「テスト課金」と「実課金」に分岐されます。

Google Play Console のアカウント =
スマホ実機の Google アカウント の場合
テスト課金のみ
実際の課金をテストしようと思うと、他人のスマホが必要
Google Play Console のアカウント ≠
スマホ実機の Google アカウント の場合
テスト課金と本当の課金両方が可能
テスト課金は、 Google Play Console でテスター登録必要

私の場合は 【 Google Play Console のアカウント = スマホ実機の Google アカウント】 だったので、妻のスマホを借りて実課金されるかテストしてみました。定期購読の方は無料期間を設けているので購入後、 Google Play から解約処理をすれば料金発生することはないのですが、単発の寄付は実際の支払いが発生します。ご注意下さい。

テスト課金

【 Google Play Console のアカウント = スマホ実機の Google アカウント】 の場合の様子

トップ画面については、いくつかの画像やボタンを android:visibility="invisible" で非表示にしていますが、 ぱっと見た目は非表示にされているものがあるなんて全く分かりません。 寄付ボタンをタップしてみます。

画面上に定期購読の商品、下に単発商品が表示されています。商品名や説明書については、 Google Play Console のIn-app products で設定した内容となっていますね。また商品画像については、 Android Studio で設定したアイコン画像が表示。 説明書の文字数なども整えると、見た目も綺麗になると思います。

あと今回利用した TrivialDrive_v2 のプログラムを読んでいる方であれば、「あれ、元々のプログラムには商品が合計で 4つあったのに 2つしか登録されていない。大丈夫か?」 とお気づきになる方もいらっしゃるでしょう。 Log を取るとデータ取得ができていないというエラーがあると思いますが、即興で寄付機能を体験するという目的から、今回はアイテム 2つのセットでテストさせていただきました。結果的にはアプリが落ちることなく動いていることが確認できまます。

「一回のみの寄付」ボタンを押した様子が上図。【 Google Play Console のアカウント = スマホ実機の Google アカウント】 になっているため決済等のところがテストカードになっています。 実際にワンクリックで購入を体験してみましょう。

「毎月寄付する」を選択した場合の決済画面は上図の様子。 定期購読の場合は、課金間隔などの注意書きが表示されます。そして注意書きを見てみると「5分ごとに課金」と書かれています。これはテストモードで利用しているために表示されている項目で、実課金モードであれば5分間隔ではなく 1か月間隔という風に表示。

この 5分というのは、Google Play が定期購読の内容を読み込む間隔で、定期課金のスパン(1か月毎、1年毎)によって変わってきます。

【テスト時の定期購読の更新頻度】

定期課金の間隔 更新頻度
1週間 5分
1か月 5分
3か月 10分
半年 15分
1年 30分

公式ドキュメント ** 英語版のみ更新頻度表示

実際に課金

課金アプリのチュートリアルは数多くあるものの、実際に課金が行われている様子を紹介しているものは発見できませんでした。実課金、どんなふうになるのか非常に興味がありましたので、妻のスマホを借りて、今回の寄付機能付きアプリをダウンロードしてテストしてみました。

Google Play Console の登録がまだの方は、スマホの Google アカウントと違うアカウントで Google Play Console を利用すると他人のスマホを借りなくても 実課金がテストできると思います。

アプリのデザイン的な部分はテスト版でも実課金版でも同じですが、「寄付する」のボタンを押した後の様子が違ってきます。 実課金の場合は、テストカードではなく Google Play に登録しているクレジットカード情報が表示。「ワンクリックで購入」をタップすると本当に課金されてしまいます。

試しに買って(寄付)みました。

上記のように Google Play からメールが届きます。 Google Play の購入履歴からでも支払いが生じたことが確認できるでしょう。

試しにもう一度「一回のみ寄付」のボタンをタップしてみました。 しかし、プログラムで複数回の購入を許可していないため、先ほどのように支払いフローには進みません。

「毎月寄付する」を選択した場合も、基本的には同じように支払いフローが表示されていきます。 実際に定期商品を購入した場合、 Google Play の設定画面から定期購読の解約お手続きすることができます。試し買いをした後、解約を忘れないように注意しておきましょう。

実際に課金した後の Google Play Console の様子

image

アプリ内商品の売り上げを確認するには、左サイドバーの Financial reports を選択。しかし、先ほど実際に「一回のみの寄付」をしたにもかかわらずデータが反映されていません。 Google Play Console の反応は Google Analytics などに比べると遅く 1日2日かかる様子。。。

【購入の翌日】

image

「一回のみの寄付」で支払いを行ってから約 24時間後、データが反映されていました。実際に金額が表示されるとチョット嬉しいですね。尚、実際に受け取れる金額は売上金の 70%。30%は、Google 手数料として引かれます。

最新のアプリ開発スキルが身に付く

CodeCampの無料体験はこちら

まとめ

  • テスト課金ではなく実課金でテストしてみたい、しかしチュートリアルなし
  • 課金テストなら寄付機能がシンプルなはず
  • 公開プログラムで動く寄付機能の Android アプリないな
  • 実課金の様子が確認できればアプリの収益化もイメージしやすいはず
  • そしてアプリ開発のモチベーションも上がるのでは。。。

という流れで始まった今回の寄付機能付きアプリのチュートリアル。TrivialDrive_v2 をベースにしているものの、 手順を文章にしてみると結構なボリューム。 ちょっと一苦労にも思いますが、自分の作ったアプリで実際の課金が体験できると収益の面では少し安心できますよね。

今回はベースアプリの TrivialDrive_2 のプログラムをほとんどイジっていませんが、不要な部分を削り、寄付以外のページやアプリ機能を加えるとより本格的なアプリとなりそう。 自分でアプリ機能を追加していくというだけでなく、また別のサンプルアプリの機能を引用して自分なりにアレンジしていくというのも一つのやり方かもしれません。

このようにプログラミング初心者、アプリ開発初心者であっても、先人の知恵と経験をお借りすることで、本格的なアプリを迅速にリリースすることも夢ではないでしょう。この時に Java の基本であったり Android Studio の基本操作が分かっているとよりスムーズに、よりかっこよく、より楽しくアプリ開発ができると思います。

「Androidアプリ開発の参考書、眠すぎ。。。」「Java 難しすぎ。。。。」「自分には無理〜」と思われている方、決してそんなことはないと思います。 Ruby や Python に比べると Java は確かに難しい言語かもしれませんが、世界中で一番といっていいぐらい使われているプログラミング言語です。 みんなが使ってる Java なら、自分に理解できないわけがありません。 おそらくモチベーションと学習環境さえ改善すれば Java を始め、 Android アプリ開発も楽しくなると思います。

「学習環境」、独学でダメだったら「プログラミングスクール」を頼ってみてはどうでしょうか?

「オンライン × マンツーマン」で定評のある CodeCamp では、 Java や Androidアプリの開発経験をもつ現役エンジニアが講師として在籍。「オンラインのプログラミングスクールは未体験」 という方、一度無料体験してみるのはいかがでしょうか?

CodeCamp では、随時無料体験を受付していますので、ご興味ある方は公式ページをチェックしてみてください。


関連記事

オシママサラ
この記事を書いた人
オシママサラ
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp