ここでは、Unity ゲームが、Unity IAP と呼ばれる購入用 API がターゲットにしているアプリ内課金ストアと相互作用するのに必要な、デジタルレコードと関係を構築する手順を説明します。
アプリ内課金 (IAP) は、お金とデジタルプロダクトとを取引する過程です。プラットフォームのストアでは、デジタルプロダクトである製品を購入することが可能です。プロダクトには、たいてい文字列データタイプである ID と、有効な期間を表すタイプが与えられています。タイプは、subscription、 consumable (再購入可能)、 non-consumable (1度だけ購入可能) が一般的です。
Unity IAP を実装するゲームを作成します。Unity IAP 初期化 と Integrating Unity IAP with your game を参照してください。
後で、iTunes Connect で使用するために、手元にゲームのプロダクト ID を控えておきます。
Apple Developer Center で、該当する ID セクションを探します。
新しい App ID を加え、Apple の基本アプリケーション情報を作成します。
注意: Explicit App ID を使用してください。Wildcard App ID (com.example.*) は、In-App Purchases を利用するアプリケーションには使用できません。
注意: App ID は Developer Center で iTunes Connect を構築したあとに使用可能になります。
![](../uploads/Main/IAPAppleImage1.png)
iTunes Connect を開き、App を作成し、ゲームとストアとの関連付けをします。
新しく作成した App ID をアプリケーションの Bundle ID に使用します。
新しいアプリの Features を選択し、+ ボタンを押して新しい In-App Purchase を加えます。
プロダクトタイプ を選択します。
Product ID を 指定し、必要に応じて他のフィールドを記入します。
注意: この Product ID は、ゲームのソースコードで使用されるのと同じ ID で、 AddProduct() か AddProducts() を通じて Unity IAP ConfigurationBuilder インスタンスに加えられます。
注意: 複数の Apple デバイスのグループをターゲットにするとき (例えば、iOS と Mac 両方を出荷するときなど)、Apple はそれぞれの違うグループが区別できるよう固有のプロダクト ID を必須としています。Unity IAP の Purchasing.IDs クラスを使用して、「1 対 多」にマッピングするプロダクト ID を特定のストアの ID に定義し、IAP を初期化するときにそのマッピングを渡します。
![](../uploads/Main/IAPAppleImage6.png)
結果
iTunes Connect で、テスト機器の iTunes アカウントで使用する Sandbox Testers を作成します。これを行うには、iTunes Connect > Users and Roles の順に選択し、プラス (+) ボタンを選択します。いくつか重要な注意事項の追加があるので、必ず Apple’s Sandbox Tester documentation を参照してください。Tester を作成するには、実在の メールアドレスを使用してください。
注意: 詳しくは iOS & Mac App Store を参照してください。
ヒント: (*) メールアドレスの管理を簡易化するためには、Gmail、iCloud、Outlook.com などのようなサブアドレス (メールアカウント+サブアドレス@example.com) の使用が可能なメールサービスを使用します。これにより、1 つのメールアカウントで複数のサブアドレスのメールを取得することが可能になります。
Wizard にしたがって、Tester を作成します。
Unity を使用して、ゲームの Xcode プロジェクトをビルドします。
注意: Unity の Bundle Identifier (Build Settings > iOS > Settings… > Other Settings > Bundle Identifier) が iTunes Connect で使用されているものと一致するよう、気を付けてください。
それから、ゲームの Xcode プロジェクトで、Team (Project Navigator > your game Target > General > Identity > Team) が Apple Developer アカウントに設定されていることを確認してください。
ターゲットになる iOS デバイスを使って、存在する Apple ID アカウントすべてからサインアウトし、Sandbox Tester としてサインインします。その後の購入はすべて、Production Store ではなく Apple Sandbox を通して送られます。
iOS デバイスでゲームをビルドして実行します。すべてが正しく設定されると、UnityPurchasing.Initialize()
へと続きます。Unity Purchasing Initialization を参照してください。
デバイス上のゲームでなにかを購入して、IAP をテストします。変更された購入ダイアログが表示され、この購入が実際、Sandbox 環境で実行されたとことを示します。購入の際に、パスワードの入力をもとめられたら、Tester のパスワードを使用してください。
警告: 表示が出ない場合は、プロダクトに対し実際に課金されます。
デスクトップ Mac ビルドを作成するとき、Unity の Mac Player Settings で _Mac App Store Validation を選択します。
アプリケーションをビルドしたら、バンドル ID とバージョン文字列で info.plist
ファイルを更新します。.app ファイル上で右クリックし、 Show Package Contents をクリックし、info.plist
ファイルを探し、CFBundleIdentifier
文字列をアプリケーションのバンドル ID で更新します。
アプリケーションに署名し、パッケージし、インストールします。your.app と your.pkg を適切に入力し、以下のコマンドを OSX ターミナルから実行します。
ヒント: バンドルに署名するには、Contents.meta ファイルが存在する場合、最初にそれを削除する必要があります。your.app/Contents/Plugins/unitypurchasing.bundle/Contents.meta
1. `codesign -f --deep -s "3rd Party Mac Developer Application: " your.app/Contents/Plugins/unitypurchasing.bundle`
1. `codesign -f --deep -s "3rd Party Mac Developer Application: " your.app`
1. `productbuild --component your.app /Applications --sign "3rd Party Mac Developer Installer: " your.pkg`
パッケージを正しくインストールするために、新しく作成したパッケージを実行してインストールする前にアンパックした .app ファイルを削除してください。
アプリケーションフォルダーからアプリを起動します。1回目は、iTunes アカウントの情報を入力するよう求められます。それに対して、iTunes Connect Sandbox Tester アカウントのログイン情報を入力してください。そうすると、Sandbox 環境でテスト購入できるようになります。
Apple の App Store のテストと署名に関する詳しい情報は、iOS & Mac App Store と Apple Mac ストアへのアプリケーション提出方法 を参照してください。