2018年3月21日コワーキングスペース秋葉原Weeybleにて行われた、カイト株式会社様による[秋葉原] Unity課金ゲームアプリ開発ハンズオン!(Unity&itemstoreの講座)に参加してたのでざっくりとメモしておきます。なお全123ページに及ぶ資料は非公開のようです。残念。→公開されてました
忙しい人向けに3行で
課金実装には個人情報(住所氏名電話番号)の公開が必須である点に注意
(法律の問題でありitemstoreに関係なく必須)
Google/Appleと格闘するのが大半でありitemstore機能の実装自体は簡単
itemstoreの無料枠は正直期待できない
概要
課金システムを手軽に実装できる
Unity標準対応
itemstoreいいところ
サーバーを用意しなくてよい
ショップ画面も複数用意
ユーザーデータの管理
プッシュ通知機能
端末引き継ぎ機能
itemstoreをunityへ導入
公式サイトで会員登録をする
ダウンロードページからUnity向けのSDKをダウンロード、対象のUnityプロジェクトにインポートする
Androidの場合、インポートされたAssets/Plugins/Android/AndroidManifest.xml内の[パッケージ名]をUnityのPlayer Settings/Other Settings/Identification/Bundle Identifier(もしくはPackage Name)に設定した値に置き換える
これだけでitemstoreの導入自体は半分完了です
デベロッパーサイトへビルドしたアプリを登録する
めっちゃめんどいので省略
Android・・・GooglePlayから「アルファ版」または「ベータ版」としてアップロードするのがポイント
iOS・・・AppleDeveloperでDevelopment版のCertificateとProvisioning Profileを作成する(アプリをアップロードする必要はない)
デベロッパーサイトへ課金アイテムを登録する
Android 「管理対象のアイテム」
iOS「消耗型」「非消耗型」
登録するアイテムIDは、アプリ間で重複してはいけない点に注意(Android/iOS共通)。またiOSはiTuneConnectで登録する
例
「pazudora」アプリと「monsuto」アプリで「mahouseki」というアイテムIDは同時に使えない
なので「pazudora.mahouseki」と「monsuto.mahouseki」というアイテムIDを使うとよい。テスト課金の時は「test.pazudora.mahouseki」とするのがよさそう
itemstoreでアプリ内課金を実装する
itemstoreにログインして「ストア」を作成し、課金アイテムを登録する。
「パッケージ名/BundleID」Unity内のIdentificationで設定した値を使用する
「メディアキー」Unity内の実装に使用する
「グループID」スクリプトからアクセスする場合に利用する
「アイテムID」デベロッパーサイトで登録したアイテムIDを使用する
1アプリにつき1つストアが必要で、2つ目以降は毎月500円/ストアの料金がかかる。
Unityで設定をする
itemstore機能を使いたいシーンに「AppC.prefab」を配置する
AppC.prefabの「Media Key」「OnAPI」「SendCallBackTarget」を適宜設定する
Unityで実装をする
AppC.ItemStoreに実装されているメソッドを幾つかご紹介
OpenItemStoreView() ショップを呼び出す
GetItemCount(“グループID”) 「グループID」のアイテムの数量を取得する。非消耗型(アンロック型)の場合は0/1(購入済/未購入)となる。
AddItemCount(“グループID”, 数量) 「グループID」のアイテムに数量分加算する。負も可
テスト購入をする
テスト用のアカウントを作成する。Androidではテスター、iOSではsandboxテスターと呼ばれる
開発者用のアカウントとは別のメールアドレスが必要。サブアドレスで作るのがおすすめ
テストアカウントでテストしたい端末にログインをする
…がAndroidは端末の初期化が必要…?
実装を完了したアプリを起動し、購入ボタンを押す(テスト課金と表示されればOK)
感想
itemstore自体の実装はかなり簡単でした。が、GoogleとAppleは強敵です。とても。そこをクリアできている方ならすぐに実装できると思います。
また無料で登録と謳ってますが、無料なのは1アプリ分だけです。それ以上の場合は月に1000円(基本料)+500円/アプリかかります。なので趣味のアプリだけどとりあえず入れておこう、というのはちょっと辛いかもしれません。