StoreKitのオファーコードテストは、まずXcodeのStoreKit Testingで購入・特典処理を確認し、その後App Store Connectで用意したSandbox用コードをSandbox Apple Accountで実際に引き換えて受け入れます。ローカル設定で購入が成功しても、Sandboxでの引き換え完了を確認したことにはなりません。

自動更新サブスクリプションにオファーコードの導線を追加する個人開発者向けに、担当範囲ごとの確認項目をまとめます。
App Store Connectの設定を済ませ、Sandboxでの引き換えを準備している開発者は、手順と記録の整理に役立ててください。
取引や購読特典を管理する小規模チームは、アプリとサーバーの処理が一致しているかを確認できます。

購入ロジックを担当する開発者は、ローカル検証の範囲を決める

XcodeのStoreKit Testingは、プロジェクトに用意したStoreKit設定を使い、商品表示、購入処理、購入後の画面や特典付与といったアプリ内のロジックを確認するためのものです。AppleのXcodeでStoreKit Testingを設定する手順に沿って、テスト対象の商品と設定ファイルを確認してください。

ローカル検証では、少なくとも次の点を確かめます。

  • [ ] 対象のサブスクリプション商品がアプリに表示され、選択できる。
  • [ ] 購入結果を受けた後、アプリが想定した購読状態を表示する。
  • [ ] 購入の復元や状態更新など、プロジェクトで必要な処理が期待どおり動作する。
  • [ ] 購入後に付与する機能やコンテンツが、取引状態に応じて切り替わる。

これはアプリ側の実装を確かめる工程です。App Store Connectで作成したコードがSandboxで受け付けられるか、実際の引き換え後にどの取引情報が届くかは、別の環境で確認しなければなりません。

選択肢 確認に向く範囲 その環境だけでは確認できない範囲
XcodeのStoreKit Testing 商品表示、購入処理、購入後の画面や特典ロジック App Store Connectで作成したSandbox用コードの実引き換え
Sandboxでのテスト Sandbox用コードの引き換え、取引受信、アプリ側の反映 本番の顧客向けキャンペーンが正常に運用されること
アプリ内引き換えのテスト アプリに実装した引き換え導線と、完了後の取引処理 導線を実装していないアプリでのアプリ内引き換え

App Store Connectを管理する担当者は、テスト用コードを分ける

Sandboxでの検証に進む前に、テスト対象のサブスクリプション商品とオファーが意図した内容で設定されているかを確認します。作成場所や設定項目は、AppleのApp Store Connectでサブスクリプションのオファーコードを設定する説明を参照してください。

Sandbox用のコードと顧客向けの正式なオファーコードは、用途と管理場所を分けて扱います。検証用のコードやアカウント情報を販促素材、顧客向け案内、公開用の記録に流用すると、意図しない配布や誤認につながります。どのコードをどの環境で使うのか、チーム内で識別できる形で記録してください。

Sandbox Apple Accountは、Appleが案内するSandboxアカウントの作成手順に従って準備します。通常利用のアカウントと取り違えないよう、テスト端末、テスト担当者、利用するアカウントを対応づけておくと、後から結果を追いやすくなります。

端末で引き換えを担当する開発者は、入口から取引まで記録する

Sandboxの実引き換えでは、操作の開始だけでなく、アプリが取引を受け取った後の状態までを確認します。AppleのSandboxでアプリ内購入をテストする説明を参照し、テストに使うアカウントと端末の条件を整えてください。

システムの引き換え入口から確認するときは、操作した入口、引き換え後に表示された結果、アプリ内の購読状態をそれぞれ記録します。コードが受け付けられたように見えることと、アプリが有効な取引を処理して特典を開放したことは、同じ判定ではありません。Appleのアプリ外で行われた購入のテストに関する説明も参照し、アプリ外の操作後に取引がどう処理されるかを確認してください。

アプリ内入力の導線も対象にする場合は、アプリ側に対応するStoreKitの処理が実装されていることが前提です。実装済みであれば、画面から引き換えを始めた記録と、結果を受け取った後のアプリ表示を別々に残します。Appleのアプリ内でオファーコードをサポートするための資料に照らし、実装した導線が資料の対象範囲に入っているかも確認してください。

注意:引き換え画面の完了表示だけを受け入れ条件にしないでください。取引を受け取ったこと、購読状態が更新されたこと、対象の特典が有効になったことをそれぞれ確かめます。

取引・特典を担当するチームは、アプリとサーバーの記録を照合する

アプリ側では、引き換え後に受け取った取引が対象商品に対応しているかを確認します。AppleのStoreKit Transactionの資料を参照し、商品識別子やオファーに関する情報など、実装で参照している取引項目と購読状態を照合してください。画面上の「引き換え完了」だけで特典を有効にするのではなく、既存の取引処理が有効な状態を反映しているかを確認することが重要です。

App Store Server Notificationsを受信する構成では、Sandboxの通知を本番環境の記録や集計から分離します。通知データに含まれる環境情報と、処理先の環境が一致しているかを確認し、AppleのApp Store Server Notificationsの有効化に関する資料に沿って通知設定を見直してください。Sandboxの取引が届かない場合も、アプリ側の購入処理とサーバー通知の受信を別の確認項目として記録すると、原因を切り分けやすくなります。

受け入れ担当者は、証拠をそろえて判定する

担当者が異なる場合でも、結果を同じ基準で評価できるよう、証拠を次の形でそろえます。

  • [ ] ローカルStoreKit設定で、対象商品と購入後のアプリ動作を確認した。
  • [ ] App Store Connectで、テスト対象のオファーとSandbox用コードを確認した。
  • [ ] Sandbox Apple Accountを使った端末操作と、引き換え結果を記録した。
  • [ ] 取引の商品情報とオファー情報を、アプリの購読状態・特典表示と照合した。
  • [ ] サーバー通知を扱う場合、Sandboxと本番の記録が分離されていることを確認した。

ローカルの購入処理だけが成功した場合は、「購入ロジックの確認済み」とし、オファーコード機能全体の受け入れ完了とはしません。Sandboxコードの引き換えが確認できても、特典の表示やサーバー側の購読状態が取引と一致しない場合は未完了です。Sandboxで実引き換えを行えていない場合や、アプリ内導線が対象なのに未確認の場合は、残った確認項目を明記して補完します。

よくある確認事項

Xcodeのローカル設定だけでオファーコードをテストできますか?

購入処理や購入後のアプリ動作を確かめる用途には使えます。ただし、App Store Connectで用意したSandbox用コードの引き換えを代わりに実行するものではありません。アプリロジックの確認と、実際のコード引き換えを別の受け入れ項目にしてください。

Sandbox用コードはどこで作成し、どこから引き換えますか?

コードやオファーの設定はApp Store Connectで確認し、Sandbox Apple Accountを用意してSandboxのテスト条件で引き換えます。システムの入口を使うケースと、アプリ内に引き換え導線があるケースは分けて記録します。顧客向けの正式なコードとは用途を混ぜないようにします。

アプリ内で入力する引き換え導線は何を確認しますか?

アプリに必要なStoreKitの対応機能が実装されていることを確認したうえで、入力画面から引き換えを行います。画面の完了表示だけではなく、取引の受信、購読状態の更新、特典表示までを一続きで確かめてください。

引き換え後、購読特典が有効になったと判断するには?

取引の商品やオファーに関する情報と、アプリが管理する購読状態を照合します。特典が画面に表示されるだけでなく、取引に対応した状態がアプリとサーバーの双方に反映されていることが判断材料です。通知を利用する場合は、Sandboxのイベントが本番記録に混ざっていないかも確認します。

Mac環境を使う場合も、引き換え確認は別に行う

Xcodeを動かせるMacが手元にない場合、遠隔のMac環境はプロジェクトのビルドやローカルStoreKit設定の確認に利用できる選択肢です。ただし、ビルドが成功したことだけでは、Sandbox Apple Accountを使った端末での引き換え、取引の反映、サーバー側の特典確認まで完了したとは判定できません。実機やテストアカウントを使う作業条件も含め、必要な確認範囲に合うかを先に整理してください。

一時的にXcodeの実行環境が必要なら、Macを購入して保守する方法や、既存の開発環境でローカル確認を続ける方法と比較し、作業期間と実機確認の要否で選ぶのが現実的です。環境の利用条件はRUVCLOUDの案内で確認できます。StoreKitのローカル検証を進めるMacが必要な場合は、必要な期間に合わせた料金案内を確認し、Sandboxの実引き換えや実機確認を別工程として計画してください。