Android アプリ 初見マスター の宣伝ページ

突貫だけど、先日公開した Android アプリ「初見マスター」の宣伝ページを作製。

http://madhatter.jp/software/sightreadex/

作ったはいいけど、どこからもリンクしていないからね。

 

ってことで、初見演奏の練習アプリです。

オタマジャックくんが応援してくれるよ!(゚∀゚)

 

5年前、前職時代に一瞬だけ存在した「ハックデイ」なる時間にコーディングして、「初見マスター」のiPhone版は公開していたんだよね。んで、ソースも公開しているアカウントも前職に置いてきたから、現在はiPhone版の修正権限は僕にはないです。

そのため、Android版は1からコーディングしてます。

 

残念ながら、iPhone版は今は公開されていません。

64bit版対応をしなかったから、登録が削除されちゃったと思うんだけど。

当時は、前職の会社が公開しているiPhoneアプリで、唯一お金を稼いでいるアプリだったんだけどね。まあ微々たるものだったけど。

Android アプリ 初見マスター をリリースしました。

Androidアプリ、公開したよー(゚∀゚)

play.google.com

 

「初見マスター」です。楽器の「初見演奏」の練習をするアプリです。

実は、前職時代に会社のアカウントでiPhone用につくったやつのAndroid移植版です。移植といっても、ソースはゼロから書いてますけどね。参考にもしていないし。

オタマジャックくんリターンズ、です。

 

  初見マスター- スクリーンショット

  初見マスター- スクリーンショット

  初見マスター- スクリーンショット

 

Androidアプリの課金処理の実装2

前回の書き込みに従って、Googleのサンプルで課金を実装。

 

「complain()」ってメソッドがあるんだけど、これって、エラー時にアラートを表示しているんだけど、「購入を途中で止めた場合」にもアラートが出るので、「complain()」メソッドを呼んでいる箇所をコメントするか、「complain()」メソッド自体を何も処理をしないようにコメントしたほうがいいかも。

 

 

Androidアプリの課金処理の実装

いろいろと先人の課金処理の実装方法を試したけど、「すでに有料版アプリとして課金済の場合に、Viewを有料版用に変更する」やり方がよくわからなかった。

結局、Googleのサンプルアプリのソースで実装し直す。

developer.android.com

 

んで、こちらがそのサンプルソース

github.com

 

テストでは、有料版用に課金済で、再度アプリを立ち上げた場合に、Viewが有料アプリ番の状態で自動的に表示させることに成功。

TrivialDriveのソースで検証。

 

もうちょっと検証してみる。

 

Androidのspinnerのentriesの値を、activity側から変更したい。

課金するアプリで、有料版と無料版で値を変更したいじゃないですか。

 

strings.xmlで有料と無料用にそれぞれ値を用意しておいて。

んで、下記にある方法で。

stackoverflow.com

 

> String[] testArray = getResources().getStringArray(R.array.testArray);

> ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
> this, android.R.layout.simple_spinner_item, testArray );
> mySpinner.setAdapter(spinnerArrayAdapter);

 

この方法でいけた。

Android Studio 課金テストのやり直しとか課金をキャンセルしてもう一回テストとか

Android、課金のテストは成功したんだけど、これもう一回テストしたい場合、どうすればいいんだ?

課金のキャンセルとかできるんだろうか?

 

いろいろ調べてもよくわからなかったんだけど、Google Play Console にアクセスすると、左のメニューに「注文管理」なる項目があるのを、今更発見。

 

f:id:asacloud9:20171209113432p:plain

 

これか。

以前にも有料アプリの公開はしたことあったんだけど、このメニューの存在は知らなかった(゜∀。)ワヒャヒャヒャヒャヒャヒャ

 

f:id:asacloud9:20171209113657p:plain

お、一覧に「テスト用の注文」なるレコード発見♪

左のチェックボックスにチェックを入れると「払い戻し(1件)」なるボタンが表示される。

 

f:id:asacloud9:20171209114021p:plain

 

次の画面で、キャンセル理由などを入力できる画面が表示。

 

 

f:id:asacloud9:20171209114821p:plain

 

 

「送信」ボタンクリック、一覧が表示され、「払い戻し中」というステータスになっている。

 

さて、キャンセルできるかな……。

 

 

追記

5分ほどでステータスが「払い戻し済み」になった(゚∀゚)

んで、Android実機にインストールしたアプリの「データを消去」「キャッシュを消去」して再度購入の実験……するんだけど、あれ、購入したことになってるな。

何か足りないかな……。

 

何回かアプリ消して、データ、キャッシュ消してとか繰り返していたら、また課金を認識してくれるようになった。

 

ちなみに、下記の情報もあった。

 

アプリ内課金でキャンセルすると

https://www.gamekozo.com/faqs/%E3%82%A2%E3%83%97%E3%83%AA%E5%86%85%E8%AA%B2%E9%87%91%E3%81%A7%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%81%99%E3%82%8B%E3%81%A8

 

>  再度購入するにはGoogle Playアプリのキャッシュを消去する必要があります。
> 設定ーアプリケーションーGoogle Playアプリを開いてキャッシュを消してください。
> 恐らくGoogle Playのバージョンによるトラブルと考えられます。

Android Studioで課金テストしたいんで、まずapk作製

[Build]->[Generate Signed APK]を選択。

 

諸々の設定などは下記を参考。

 

androidstudio.hatenablog.com

 

途中の Signature Vrsions は V1 , V2 の両方にチェック。

 

エラーが出なければ、下記にapkが作製される。

C:\Users\[ユーザ名]\AndroidStudioProjects\[プロジェクト名]\app\release\app-release.apk

 

Google Play Consoleにアクセスして、

 

[すべてのアプリ]から該当のアプリを選択し(アプリの仮情報は事前登録しているものとして)、[アプリのリリース]->[ベータ版]の[リリースを編集]クリック。

[Google Play App Signing]クリックで[次へ]→[同意]。内容は確認のこと。

 

次に[追加する APK]から作ったAPKをアップロード。

ただし、アップロードするAPKをビルドする際に、app/build.gradle 内の [versionName] 、0.0.0からスタートのこと。ベータ版で1.0.0にしちゃうと、本番リリースの際にその次の番号からしかスタートできないんで、最低でもバージョンが1.0.1になっちゃうんで注意。

 [リリース名]と[このリリースの新機能]に任意の値を追加して保存。

 

前画面に戻って[テスト方法の選択]から[クローズド ベータ版テスト]を選択。

ユーザを登録して、[テスター]にチェック入れて、保存。

 

その前に、[ストアの掲載情報]、[コンテンツのレーティング]、[価格と販売/配布地域]のビックリマークが消えるまで入力項目を埋める。

 

f:id:asacloud9:20171205005057p:plain

 

[アプリのリリース]->[ベータ版]の[ベータ版を管理]クリックし、[ベータ版として公開を開始]クリックで、ベータ版で公開。今回は10分くらいで公開が始まったかな。

 

このページの[テスターの管理]の右側の三角形をクリックすると[オプトインURL

]ってのが表示されるんで、これをテストユーザに教える。 

 

あと、開発者自身のアカウントでは、やっぱりテスト購入はできなかった。

 

[ストアでの表示]の[アプリ内サービス]

でアイテム登録。今回はゲームでいうところの「ステージ追加」みたいな感じで、一度買ったらそれで終了なアプリの実装なんで[管理対象のアイテム]から[管理対象アイテムを作製]クリックで作製。アイテムIDはキャメルケースはNGだった。なんで?

 

 あと、一度ベータ版とかで公開してしまえば、あとはテストだけなら毎回Google Playにapkをアップしなくても、テストは可能。

プログラムを修正して、端末とPCを繋いで、検証をAndroid端末上で行える。便利。