はじめに
前回は、 Unity でブロック崩しのアプリを作りました。
いよいよ今回は、 itemstore(無料のトライアル版)を使って、前回作ったブロック崩しに課金アイテムの購入・消費などの処理を追加していきます。
前回のアプリ内課金なしのブロック崩しと同様に、アプリ内課金を導入したブロック崩しの Unity プロジェクトも教材として公開しています。
ダウンロードした教材プロジェクトを Unity で開き、プログラムや素材を実際に見ることで、記事の内容がよりわかりやすくなると思います。
https://github.com/sakura-crowd/iap_blockkuzushi
それでは、 itemstore 経由で販売するアイテムの作成方法から説明していきましょう。
ストアと課金アイテムを作ろう
itemstore へのログイン
まずは、 itemstore にログインをしましょう。
まだ登録していなければ「登録はこちらから」ボタンをクリックして、簡単な登録を済ませてください。
itemstore への登録から itemstore SDK の Unity へのインポートまでは、Qiitaの記事「Unityを使ったAndroid向け課金ゲームアプリの開発環境を準備する」で紹介していますのでそちらをご覧ください。
ストアの作成
ログインを済ませたら、課金アイテムを販売するためのストアを作りましょう。
ストア管理ページの「+新しいストアを追加」ボタンをクリックします。
このとき、トライアルとプレミアムが選べますので、無料で試してみたい場合はトライアルを選んで、「追加する」ボタンをクリックしましょう。
追加するストアの名前と OS を入力して「追加する」ボタンをクリックします。
これで、アプリ用のストアが作成できました。アイコンなどをクリックすることで、各種設定をするストア管理ページに移動できます。
続いて、販売する課金アイテムを作っていきましょう。
アイテムグループの作成
課金アイテムを作る前に、その課金アイテムが属するアイテムグループを作ります。
たとえば、「課金石」というアイテムグループがあり、「課金石1個」(100円) や「課金石5個セット」(300円) というアイテムがストアで販売されます。
購入したアイテムに設定された個数に応じて、アイテムグループの所持数が増える仕組みです。
アイテムグループを作成するには、ストア管理ページの「アイテム管理」を表示します。
最初は何も登録されていないのでアイテムグループもアイテムも空っぽです。
「+グループを追加する」ボタンをクリックして、まずはアイテムグループを作りましょう。
所持数やグループ名を取得するために必要な ID と、アイテムグループのアイコン画像や説明文を入力して、「追加する」ボタンを押せば完了です。
アイテムの作成
アイテムグループを作成すると、アイテム管理のページに追加されたアイテムグループが表示されます。
その左下の「+アイテムを追加」ボタンをクリックすることで、アイテムを作成できます。
アイテムでは、販売するアイテムグループの個数や単位を設定できます。
例えば、「課金石」というアイテムグループならば、「課金石5個セット」などのアイテムを追加できます。
アイコン画像は、アイテムグループと別の画像を設定することもできます。
アイテム ID は GooglePlayConsole で作成したアイテムの ID と同じにします。
また、販売価格については GooglePlayConsole のアイテムの設定で行います。
GooglePlayConsole の設定については連動している Qiita 記事をご覧ください。
アイテムが追加されると、アイテムグループの下にアイテムのリストが表示されます。
ここで作成したアイテムが、スマートフォンからアクセスするストアで販売されることになります。
ストア情報の設定
Androidストア情報では、アプリ・ストア・ GooglePlayConsole との連携に必要な設定を行います。
Unity で設定するアプリの Package Name や、 GooglePlayConsole でアプリごとに発行されるライセンスキーをそれぞれに設定します。
詳しくは連動している Qiita 記事を参照してください。
これで、 itemstore のストアの設定ができました。
ここからは、 Unity プロジェクトを編集して、 アプリと itemstore との間のやりとりを実装していきます。
Unity で itemstore SDK を使ってみよう
itemstore や GooglePlayConsole の設定が終わったら、 itemstore SDK を Unity プロジェクトに組み込んでいきましょう。
組み込むといっても、 AppC プレハブをシーンに配置・設定するだけで、アプリ内課金の準備は完了です。
あとは、課金処理を行いたいときに、配置した AppC の機能を呼び出すだけです。
今回の教材で使った itemstore の関数とイベントは次のとおりです。
使用した itemstore の関数
AppC.ItemStore.GetItemCount(GROUP_ID)
指定したアイテムグループの所持数を取得します。
アプリ起動時や、ストア画面を閉じたタイミングで所持数の更新に使いました。
AppC.ItemStore.AddItemCount(GROUP_ID, -1)
指定したアイテムグループの所持数を変更します。
Add とありますがマイナスの値を設定すれば所持数を減らすこともできます。
課金アイテムを消費したタイミングで所持数を減らすために使いました。
使用した itemstore のイベント
FinishedSetupAppC(b)
アプリが itemstore を利用する準備が完了した際に呼び出されるイベントです。
準備に失敗した場合は引数 b に false が渡されます。
教材では、準備が完了したタイミングで itemstore のサーバから課金アイテムの所持数を取得して、アプリ画面に反映しています。
ClosedItemstoreView()
課金アイテムを購入するためのストア画面が閉じられた際に呼び出されるイベントです。
ストア画面を開いている間に課金アイテムを購入したかもしれないので、このタイミングで所持数を取得して、アプリ画面に反映しています。
たったこれだけの関数とイベントですが、しっかりとアプリ内課金を実装できました。
itemstore SDK の関数やイベントは他にもいくつか用意されています。
それらの説明については、itemstore のチュートリアルや他のサンプルを参照してください。
なお、スマートフォンでうまく動作しないときは PC と連携して Visual Studio などでデバッグすることもできます。
スマートフォンと PC をつないで行うデバッグの詳細は、連動している Qiita 記事をご覧ください。
スマートフォンから課金アイテムを買ってみよう
それでは、AppC の機能を使って実装したアプリ内課金をスマートフォンで試してみましょう。
最初からうまくいかないのがプログラム開発ですが、今回はなんと一発でストアにアクセスすることができました!
さきほど itemstore のアイテム管理ページで追加したアイテムたちが、ストアの販売欄にのっています。
あとは買いたいアイテムをタップして購入手続きを行うだけです。
ストアで課金アイテムを購入する複雑な処理が、
AppC.ItemStore.OpenItemStoreView();
という、たった1回の関数呼び出しだけで実現できます。
教材では SHOP ボタンが押されたイベントで使っています。
ちなみに今回は、 GooglePlay のクローズドベータを利用したテスト購入です。
その方法については、「Android itemstore課金機能に必要な設定|チュートリアル」を参考にしてください。
アプリで課金アイテムの所持数を更新しよう
itemstore の関数によって、ストアで課金アイテムを購入する処理が簡単に実現できました。
今度は、アプリで課金アイテムの所持数を更新してみましょう。
購入したのに、ストア画面を閉じてアプリに戻ったら反映されていないようでは、ユーザーさんが戸惑ってしまいます。
そんなときに便利なのが ClosedItemstoreView イベント関数です。
このイベント関数は、ストア画面を閉じたタイミングで呼び出されます。
このイベントで、AppC.ItemStore.GetItemCount 関数を呼び出し、課金アイテムの所持数を取得すれば更新は完了です。
あとは、画面で所持数を表示しているテキストなどに最新の所持数を設定すれば、ストア画面からアプリの画面に戻った直後に課金アイテム数が更新され、ユーザーさんも安心です。
ストアアナリティクスで購入結果を見てみよう
itemstore のストア管理ページには、ストアアナリティクスという項目があります。
例えば、さきほど購入した課金アイテムの販売個数や売り上げ、ストアにアクセスした回数などもグラフや表で簡単に確認できます。
今回は紹介しませんでしたが、 itemstore のストア管理ページには、開発者をサポートする機能が他にもたくさんあります。
これらの機能を活かすことで、より良いアプリ運営ができるでしょう。
itemstore を使ってみて
連載前は難しいと思っていたアプリ内課金ですが、試してみると「あっけなくできた」というのが率直な感想です。
Qiitaの記事「Unityでアプリ内課金を簡単に実装する方法」でも紹介されているように、本格的なアプリ内課金では、サーバを用意したり、不正ユーザーへの対策を講じたりとコストがかかることが一般的です。
アプリ内課金を開発・運用するにあたり、複雑でコストのかかる部分を任せられる itemstore という選択肢は十分に検討の余地がありそうです。
さいごに
ここまで読んでいただきありがとうございました。
この連載ではアプリ内課金を取り入れたブロック崩しの作り方を説明してきました。
読者のみなさんが、少しでもアプリ開発や itemstore に興味を抱いてくれたならうれしいです。
儲かるかどうかは別の話ですが、 これをきっかけに itemstore でアプリ内課金デビューをしてみましょう!
文・開発:さくらくらうど(@SakuraCrowd)
個人でゲームを開発しています。アプリ内課金については初心者ですが、itemstoreを利用することで簡単に課金ゲームアプリが作れることを、実際の開発を通して伝えられたら良いなと思っています。
Blog : http://sakuracrowd.blogspot.jp/
Twitter : https://twitter.com/SakuraCrowd