メインコンテンツへスキップ

iOSサンドボックステストの設定

GitHub

iOSでのアプリ内課金のテストには、App Store Connectとテストデバイスの両方で適切な設定が必要です。このガイドでは、サンドボックス環境でのテストを開始するために必要な手順をすべて解説します。

  • Apple Developer Program: 年間更新の有効なメンバーシップ
  • 契約: 銀行および税務情報の入力が完了した「Paid Applications Agreement」への署名済み状態
  • Xcode プロジェクト: 正しい bundle identifier と capabilities が設定されていること

セットアップ手順

「Setup Process」セクション
  1. Paid Applications Agreement に署名する

    App Store Connect で以下に移動します 契約、税務、および銀行口座 以下を完了してください:

    • Paid Applications Agreementに署名する
    • 銀行口座情報の追加
    • 税務フォームの入力

    Appleが情報を承認するまで待ちます(24〜48時間かかる場合があります)。

  2. Sandboxテストユーザーの作成

    App Store Connectで、以下に移動します: ユーザーとアクセス > Sandboxテスター.

    次をクリックします: + ボタンをクリックして、新しいSandboxテスターを作成します。

    重要: すでに Apple ID に紐付けられているメールアドレスは使用できません。以下のメールエイリアスを利用できます:

    • Gmail: youremail+test@gmail.com
    • iCloud: youremail+test@icloud.com

    Sandbox テスターを作成

  3. テストデバイスの設定 (iOS 12+)

    iOS 12 以降では、購入テストのために iTunes アカウントからサインアウトする必要はありません。

    iOS デバイスでの操作:

    1. 開く 設定
    2. タップ App Store
    3. 一番下までスクロール
    4. タップ Sandboxアカウント
    5. Sandboxテストアカウントでサインインしてください
  4. Xcodeプロジェクトの設定

    Xcodeプロジェクトで以下を確認してください:

    Bundle Identifier

    • Developer Centerの識別子と一致していること
    • App Store Connectの識別子と一致していること

    In-App Purchase Capability

    1. Xcodeでプロジェクトを選択します
    2. 以下に移動します: Signing & Capabilities
    3. クリック + Capability
    4. 追加 アプリ内課金
  5. アプリ内課金アイテムの作成

    App Store Connectで対象のアプリに移動し、アプリ内課金アイテム(サブスクリプション、消耗品など)を作成してください。

    Sandboxテストを行うには、アイテムのステータスが少なくとも「提出準備完了」である必要があります。

  6. 実装のテスト

    テストデバイスでアプリをビルドして実行します。購入を試みると、以下の内容が表示されるはずです:

    [環境: Sandbox]

    この確認画面は、現在Sandbox環境にいることを示しており、実際の料金は発生しません。

  • 実際の課金は発生しません: Sandboxモードではすべての購入が無料です
  • サブスクリプションの高速化: テストを迅速に行うため、サブスクリプション期間が短縮されています
    • 1週間のサブスクリプション = 3分
    • 1ヶ月のサブスクリプション = 5分
    • 2ヶ月サブスクリプション = 10分間
    • 3ヶ月サブスクリプション = 15分間
    • 6ヶ月サブスクリプション = 30分間
    • 1年サブスクリプション = 1時間
  • 自動更新の制限: サンドボックスでは最大6回まで自動更新されます
  • 即時キャンセル: キャンセルされたサブスクリプションは即座に期限切れとなります
  • 異なるシナリオ用に複数のテストアカウントを作成する
  • テストアカウントはテストデバイスでのみ使用してください
  • Sandboxテストに個人のApple IDを使用しないでください
  • テストアカウントは、リージョンに関係なくすべての製品を購入できます
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
const { isBillingSupported } = await NativePurchases.isBillingSupported();
if (!isBillingSupported) {
throw new Error('StoreKit not supported on this device');
}
// Fetch products (automatically uses sandbox when available)
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly'],
productType: PURCHASE_TYPE.SUBS,
});
// Make test purchase
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Test purchase successful!', transaction.transactionId);

正しく設定されると、以下の状態が確認できます:

  1. Sandboxバナーが表示される 購入時に「[Environment: Sandbox]」と表示される
  2. 製品がロードされる 正常に完了する
  3. 購入が完了します 実際の課金なしで
  4. レシートの検証が 正しく行われます
  5. サブスクリプションが 自動更新されます(高速化された周期で)

製品が読み込まれない場合:

  • Bundle IDがApp Store Connectと一致しているか確認してください
  • 規約への同意と承認が完了しているか確認してください
  • 製品のステータスが少なくとも「提出準備完了」であることを確認してください
  • 商品作成後、2〜3時間待機してください

「iTunes Storeに接続できません」:

  • Sandboxアカウントの設定が正しいか確認してください
  • デバイスがインターネットに接続されているか確認してください
  • Sandboxアカウントから一度サインアウトし、再度サインインしてください
  • アプリを再起動してください

購入処理がエラーなく失敗する場合:

  • Xcodeのコンソールでエラーメッセージを確認してください
  • In-App PurchaseのCapabilityが有効であることを確認してください
  • Sandboxアカウントのメールアドレスが実際のApple IDでないことを確認してください
  • 新しいSandboxテストアカウントの作成を試してください

レシート検証エラー:

  • テスト時はsandbox用のレシート検証エンドポイントを使用してください
  • 本番用エンドポイント: https://buy.itunes.apple.com/verifyReceipt
  • Sandbox用エンドポイント: https://sandbox.itunes.apple.com/verifyReceipt
  • native-purchases plugin がこれを自動的に処理します

サブスクリプション期間の不一致:

  • Sandbox環境ではサブスクリプションの期間が短縮される点に注意してください
  • 想定される期間については、上記の変換チャートを参照してください
  • Sandboxではサブスクリプションの自動更新は最大6回までです

「This Apple ID has not yet been used in the iTunes Store」:

  • これは新しいsandboxアカウントでは正常な挙動です
  • 購入を続行してアカウントを有効化してください
  • 初回利用時のみ発生します
  1. 複数のテストアカウントを作成 異なるテストシナリオに合わせて
  2. すべてのサブスクリプション期間をテスト 挙動を確認するために
  3. 解約と更新の フローをテスト
  4. レシート検証が 正しく動作するか確認
  5. 購入情報の復元 機能をテスト
  6. サブスクリプションのアップグレード/ダウングレードの確認 の動作を使用します
  7. 不安定なネットワーク環境でのテスト

本番環境とSandboxの違い

「本番環境 vs Sandbox」セクション
機能Sandboxプロダクション
実際の決済いいえはい
サブスクリプションの期間高速通常
自動更新制限6回無制限
解約時の効果即時期間終了時
レシートエンドポイントSandbox URL本番環境のURL
テストアカウントのみはいいいえ

詳細については、以下を参照してください: Apple StoreKitの公式ドキュメント のsandboxテストに関する項目。

iOS Sandboxテストの設定から続ける

「Configure iOS Sandbox Testing」のセクション以降

使用している場合 iOSサンドボックステストの設定 ストアの承認と配信を計画するには、これを次と連携させてください: @capgo/native-purchases を使用する 「Using @capgo/native-purchases」のネイティブ機能については、 @capgo/capacitor-in-app-review @capgo/capacitor-in-app-review での実装の詳細については、 @capgo/capacitor-in-app-review の使い方 「@capgo/capacitor-in-app-review の使い方」のネイティブ機能については、 @capgo/capacitor-native-market @capgo/capacitor-native-market の実装の詳細については、 @capgo/capacitor-native-market の使用 「@capgo/capacitor-native-market. の使用」のネイティブ機能については