そのためチョットとしたレイアウトの変更でもバグの原因に。
またサンプルアプリ内のプログラムでセキュリティ設定が行われているため、 Android Studio から実機テストをしようと思っても設定が難しく、疲れます。。。
今回については、 Android Studio 上で実機テストを行わず、作成したアプリのファイルを Google Play Console にアップしてテストしてみました。
以上のことから今回紹介する寄付機能を実際のアプリに加えようと思うと、 Java や Android Studio の基礎知識が必要ということをご理解ください。またあくまで本チュートリアルは、課金機能を気軽に体験いただき、「Android アプリ開発すれば儲かるかも!?」 というモチベーションUPのために用意されたものになります。
<?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 ¼ 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… 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>
素人目で考えるといらない画像やボタンを削除すれば OK と考えますよね。私、試しました。しかし、アプリは起動せずに落ちます。理由は、ここで設定している画像やボタンは他のプログラムと関係しているため。試しに Android Studio や GitHub の検索機能で gas_gauge としてみて下さい。
<?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>
次は新しく作成したアイコンの画像データを Android Studio に設定していくわけですが、今回は TrivialDrive_v2 というテンプレートを利用しているため、一括で画像データをアップロードすることが容易ではありません。そのため各サイズのアイコンデータを手作業で Android Studio にセットしていきます。
既存のアイコンデータが保存されているところを確認すべく、変更したいアイコンのファイル名のところで右クリックし、Show in Files を選択。
今回作成した寄付機能付きアプリを体験しようと思った時、 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 アカウント】 の場合の様子
画面上に定期購読の商品、下に単発商品が表示されています。商品名や説明書については、 Google Play Console のIn-app products で設定した内容となっていますね。また商品画像については、 Android Studio で設定したアイコン画像が表示。
説明書の文字数なども整えると、見た目も綺麗になると思います。
「毎月寄付する」を選択した場合も、基本的には同じように支払いフローが表示されていきます。 実際に定期商品を購入した場合、 Google Play の設定画面から定期購読の解約お手続きすることができます。試し買いをした後、解約を忘れないように注意しておきましょう。
実際に課金した後の Google Play Console の様子
アプリ内商品の売り上げを確認するには、左サイドバーの Financial reports を選択。しかし、先ほど実際に「一回のみの寄付」をしたにもかかわらずデータが反映されていません。 Google Play Console の反応は Google Analytics などに比べると遅く 1日2日かかる様子。。。