2017/10/04
こんにちは。
あそです。
タイトル通り、RPGツクールMVでAndroidアプリ、iPhoneアプリのアプリ内課金を実装する方法について記載したいと思います。
整理して書いておかないと忘れそうなのもあるんですが汗
RPGツクールMVでアプリを作ることはできますが、アプリ内課金はできないのかなーと考えていたときに、
ぐぐってみるとできそうだったので、コエヲタヨリニ。SPに勉強のために実装してみました。

上記画面の奴ですね。
RPGツクールMVで製作したゲームをアプリ化する際にCordovaを使用しますが、
(RPGツクールMVの説明書ではiOSアプリ化する際に書かれています)
Cordovaには世界中の人達が作成した様々なプラグインがあります。
そのプラグインの中で「Cordovaでアプリ内課金を実装する」ものがあります。
cordova-plugin-purchaseというプラグインです。
参考にさせたいただいたのは、下記のHPです。
https://qiita.com/itmarlin/items/94080c47553fa609e593基本的には、Cordovaプロジェクトに
cordova plugin add cc.fovea.cordova.purchase
で、プラグインを導入して、javascriptコードを書くだけでOKです。
Androidアプリについては、プラグイン導入時にライセンス キー(BILLING_KEY)を指定する必要があるので、
事前にアプリをGoogle Play Console上にあげていないといけません。

開発ツール→サービスとAPI
のところにライセンスキーが書かれています。
3、4行の英数字の長い羅列です。
Androidの場合は、プラグインをaddする時に下記の通り必要になります。
cordova plugin add cc.fovea.cordova.purchase --variable BILLING_KEY="ライセンスキー"
そして、アプリ内サービスとして、アプリ内課金のアイテムをAndroidとiOS両方共に
登録する必要があるので、どちらにせよ事前にコンソール上にアプリをアップしておかないと
いけないかと思います。
※アプリ内課金の動作テストをするにも、アップしないといけないので、
面倒くさがらずにアップしましょう。
(面倒くさがって、アップしなくてえらい目にあったのが私です)
コンソール上にアプリ内課金アイテムも登録できたら、
後はJavaScriptのコードの記述です。
基本的に記事の最初の方でご紹介したコードを参考にさせていただきました。
【ソースコードはこちらをご覧ください】※汚いです。
上記のstore.jsファイルをindex.htmlから読み込ませて、
RPGツクールMVの「スクリプト」から関数を呼び出す形にしました。
アプリ内課金について、つまったところが下記の2点です。
(1)Androidは、ローカルでビルドしてインストールしたアプリだとアプリ内課金が上手く動かない。
アプリ内課金アイテムを購入したらtrue
購入していなかったらfalse
を返すのが正常な動きなのですが、ローカル上だと常にfalseを返してきます。
面倒くさいですが、アルファ版かベータ版としてアプリを公開して、
テストユーザーとしてGooglePlayストアからダウンロードしてテストしましょう。
アルファ版かベータ版で公開
↓
ダウンロード・テスト
↓
異常があれば、作り直してアルファ版かベータ版で公開
この作業がテストで必要になります。
(2)iOSは、アプリ公開直後にはアプリ内課金アイテムが準備されていない!?
これはめちゃくちゃ焦ったのですが、iOS版において、テストではアプリ内課金がまったく問題なかったのに、
本番公開すると、アプリ内課金アイテムを購入しようとすると、アプリが強制終了しました。
調べてみると(アップルにも問い合わせしました)
iOSアプリでは、24時間以内に順次、公開されていくらしいので、
iOSアプリ自体は準備完了でストアに公開されても、課金アイテムの準備がまだで、
購入しようとするとアプリが落ちる。ということがあるそうです。
ストアに公開してから最大24時間は待つ必要があるとのことでした。
※私の場合は、アップルの開発者の利用規約の更新あったけど、
その更新された利用規約に同意していなかったために、
上記のようなことが発生したかもしれません。
アップルの利用規約は日々更新されていきますが、最新の利用規約に同意していないと、
同じく上記のような状況が起こることがあるらしいです。
アプリ内課金を実装したら、利用規約が更新されていないかチェックしておきましょう。
そして、アプリ公開から10時間ほど待つと、ちゃんとアプリ内課金が動くようになりました。
(3)iOS版は、明確に「購入の復元ボタン」が無いと審査に落ちる
課金アイテムを買った際に、機種変更してもその課金アイテムが反映されるように、
復元する仕組みが必要になります。
私はアプリ起動時にそれをチェックするようにしていたのですが、
(自動で行うので、復元ボタンをつけていなかった)
アップルから「購入の復元ができるボタンをつけろ」とリジェクトされました。
課金画面に復元ボタンは用意しておきましょう。
ざっとこんな感じになりましたが、アプリ内課金を実装しようとすると、
結構手間でした。
慣れれば、もう少し早くいけるとは思うのですが……。
色々できますねRPGツクールMV。
これで広告の選択肢が増えて、ゲームが重いのを克服できたら
かなり強力なゲーム製作ツールになると思います。