UnityでiOS StoreKit In App Purchase Pluginを使ってアプリ内課金をためす方法

UnityでAndroid In App Billing Pluginを使ってアプリ内課金をためす方法 | ひささん日記でAndroid版を書いています。

引き続き、prime31Asset Store – iOS StoreKit In App Purchase Pluginのプラグインを使って、iOSの課金のテストをしていきます。

iOSで課金のテストをするには、iTunesConnectにてアプリを作成し口座登録をし課金アイテムを作成する必要があります。
このときに、iOS Developer Programでやる必要がありEnterpriseではiTunesConnectにログインができません。

以下、書くまでもない内容は項目だけ書いています。

iOS Developer Programに登録する

Certificates、AppID、Devices登録をしてProvisioning Profilesを事前に登録する

iTunesConnectにアプリを登録

Androidでは、実際に仮のapkを登録する必要がありましたが、ここでは必要ではないようで、
単にアプリを作ればOKです。
(申請するときと同じ項目いれないといけないのですんごくめんどうですが、、、)

こちらのまとめでいけた!
iTunesConnect アプリの登録方法 – 散歩しながら 〜〜アプリ開発〜〜

口座情報を登録する

結構面倒なんですが、これをやらないとアイテム作成のところで課金アイテムの登録ができませんでした。

こちらのまとめでいけた!
iTunesConnect 銀行口座の登録 – 散歩しながら 〜〜アプリ開発〜〜

テストユーザーを登録する

課金するときに使うテストユーザーを作成します。
AppleIDに紐付いていないメアドでも大丈夫でした。

こちらのまとめでいけた!
iTunesConnect テストユーザーの作成 – 散歩しながら 〜〜アプリ開発〜〜

課金用のアイテムを作成する

iTunesConnectのアプリページの右側にManage In-App Purchasesボタンがあるのでクリックする。
左上にあるCreate Newボタンをクリックする。
講座情報の設定が済んでいれば、ここにいろんなアイテムの種類が並んでいると思います。

それぞれの違いは以下のとおり。

Consumable

    消費型

  Non-Consumable

     非消費型

  Auto-Renewable Subscriptions

    自動更新購読

  Free Subscription

    無料購読

  Non-Renewing Subscription

     非更新購読

via: iTunesConnect アプリ内課金 プロダクト作成 手順 – 散歩しながら 〜〜アプリ開発〜〜

今回は魔法石的なアイテムを作るので、Consumableを選択します。
アイテムを作成するときにProduct IDはのちのち使うので、覚えておきましょう。

via iTunesConnect アプリ内課金 プロダクト作成 手順 – 散歩しながら 〜〜アプリ開発〜〜

UnityでiOS StoreKit In App Purchase Pluginを使ってみる

StoreKitEventListener.cs

そもそもHierarchyに追加したgameObjectが破棄されることがあるのか調査できていないのですが、これを追加。

void Start ()
{
    // このオブジェクトが破棄されないようにする
    DontDestroyOnLoad (gameObject);
}

StoreKitGUIManager.cs

まずはStoreKitBinding.canMakePayments()でアプリ内の購入制限(子供に触らせる方とか)が掛かっているか確認する。
(掛かっている場合の挙動はいろんなアプリを見て、促す仕組みが必要なのか要調査)

if( GUILayout.Button( "Request Product Data" ) )
{
  // array of product ID's from iTunesConnect. MUST match exactly what you have there!
  var productIdentifiers = new string[] { "magic_stone" };
  StoreKitBinding.requestProductData( productIdentifiers );
}

ここのstring配列にアイテムのProduct Idを入れる。

購入が完了すると、StoreKitEventListener.purchaseSuccessful()が呼ばれるのでレシート情報をここで取得しAppサーバーに投げるなど。
Androidの場合は、購入後に消費しないと何度も同じアイテムが買えなかったですが、iOSのほうは消費型アイテムなので、
その処理は必要なさそうですね。

今回もこちらのブログにすごく助けられました。
[Unity][iOS] prime31 iOS StoreKit Pluginを使用したアプリ内課金の実装 : West Hill 開発メモ

詳細! Objective-C iPhoneアプリ開発 入門ノート Xcode5+iOS7対応
大重 美幸
ソーテック社
売り上げランキング: 752