> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RevenueCat で支払いを追加する

> RevenueCat を使ってアプリ内のコンテンツでプレイヤーに課金しましょう。

export const AiPrompt = ({children}) => {
  return <CodeBlock className="relative block max-w-full overflow-x-hidden font-sans !whitespace-pre-wrap !break-words" style={{
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
      <div className="pr-7" style={{
    whiteSpace: "pre-wrap",
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
        {children}
      </div>
    </CodeBlock>;
};

export const subscriptionPrompt = "Add a monthly subscription to PixelGames that unlocks Snake, Racer, and Pinball.";
export const paywallPrompt = "Show the four unlockable games as cover art on the PixelGames paywall.";

## RevenueCat とは

PixelGames では、Snake、Racer、Pinball が「近日公開」としてマークされています。RevenueCat を使うと、
Apple と Google の購入システムを直接組み込むことなく、それらをアンロックするサブスクリプションをアプリで
販売できます。Agent にサブスクリプションの追加と RevenueCat の接続を依頼するだけで、あとは Agent が
残りをすべて処理します。

<Warning>
  Apple と Google はどちらも、このようなデジタルコンテンツに対して自社のアプリ内課金システムの使用を
  義務付けており、どちらも売上の一部を手数料として取ります。外部の支払いリンクでこれを回避することは
  できません。
</Warning>

## 始める前に

* モバイルアプリとして設定された Replit プロジェクト。
* RevenueCat アカウント。必要なのはメールアドレスとパスワードだけで、銀行口座はまだ必要ありません。

## 始めましょう

<Steps>
  <Step title="Agent にサブスクリプションの追加を依頼する">
    <AiPrompt>
      {subscriptionPrompt}
    </AiPrompt>
  </Step>

  <Step title="RevenueCat アカウントを接続する">
    Agent が RevenueCat の接続を促すので、**Connect RevenueCat** を選択して開始します。

    <Frame caption="この機能を検出した後、RevenueCat の接続を求める Replit。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/revenuecat.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=880a63197ea3bcc5b1c7ec064674e44f" alt="Replit の Connect RevenueCat セットアップモーダル" data-path="images/pixelgames/mobile/revenuecat.png" width="964" height="297" data-path="images/pixelgames/mobile/revenuecat.png" />
    </Frame>
  </Step>

  <Step title="Replit を認証する">
    RevenueCat の認証ページで、**Read & Write** アクセスを許可します。
  </Step>

  <Step title="Agent がサブスクリプションをビルドする">
    Agent が RevenueCat プロジェクトを作成し、プロダクトとエンタイトルメントを設定して、アプリ内の
    購入フローを組み込みます。
  </Step>
</Steps>

## サブスクリプションをテストする

Replit のプレビューは RevenueCat のテストモードを使用します。Expo Go で購入をテストすると、実際の
請求は発生せず、テスト購入ダイアログが表示されます。Apple がアプリを App Store 向けに承認すると、
購入には実際のお金が使われるようになるため、送信前に価格を再確認してください。

<Frame caption="PixelGames のペイウォールと、Expo Go に表示されるテスト購入ダイアログ。">
  <img src="https://mintcdn.com/replit/WuaQIOfW5oxRlxex/images/pixelgames/mobile/paywall.png?fit=max&auto=format&n=WuaQIOfW5oxRlxex&q=85&s=6575d5687f78a783861b52044eb21c14" alt="RevenueCat のテスト購入ダイアログの隣にある PixelGames のペイウォール画面" data-path="images/pixelgames/mobile/paywall.png" width="2274" height="1470" data-path="images/pixelgames/mobile/paywall.png" />
</Frame>

上記のテスト購入ダイアログは、実際にプレイヤーが目にするものではありません。Expo Go はすべての
Expo プロジェクトをプレビューする共有アプリのため、アプリの実際の RevenueCat アイデンティティを
解決できず、代わりに汎用のテストフローを表示します。実際のビルドを用意するか、アプリを公開すると、
ペイウォール自体はアプリにハードコードされたものではなく、リモートから配信される RevenueCat 独自の
画面になります。

## ペイウォールをカスタマイズする

ペイウォールはリモートから配信されるため、新しいビルドを作成しなくてもデザインを変更できます。
方法は2つあります。

**Agent に依頼する**

<AiPrompt>
  {paywallPrompt}
</AiPrompt>

**または手動で編集する**

<Steps>
  <Step title="ペイウォールエディターを開く">
    RevenueCat ダッシュボードで **Paywalls** に移動し、ビジュアルエディターで作成または編集します。
    色、背景画像、タイトルテキスト、ボタンのスタイルなど、アプリの見た目に合うものを選べます。

    <Frame caption="RevenueCat のビジュアルペイウォールエディター。">
      <img src="https://mintcdn.com/replit/WuaQIOfW5oxRlxex/images/pixelgames/mobile/customize-paywall.png?fit=max&auto=format&n=WuaQIOfW5oxRlxex&q=85&s=fca147e23db57f4408ad00bec8eab2d1" alt="PixelGames のプレミアムペイウォールのレイアウトとプロパティを表示する RevenueCat のペイウォールエディター" data-path="images/pixelgames/mobile/customize-paywall.png" width="1920" height="991" data-path="images/pixelgames/mobile/customize-paywall.png" />
    </Frame>
  </Step>

  <Step title="オファリングに紐付ける">
    ペイウォールを現在のオファリングに接続します。
  </Step>

  <Step title="変更はリモートで反映される">
    新しいデザインは、TestFlight でも公開後でも、次にペイウォールが開かれたときに反映されます。
    App Store の更新は不要です。
  </Step>
</Steps>

<Frame caption="実際のシステム購入確認とともに、TestFlight で公開されているカスタマイズされたペイウォール。">
  <img src="https://mintcdn.com/replit/WuaQIOfW5oxRlxex/images/pixelgames/mobile/paywall-testflight.png?fit=max&auto=format&n=WuaQIOfW5oxRlxex&q=85&s=fc8a548efa85548a37065c4ff41f54a6" alt="実際の TestFlight 購入確認シートの隣にある TestFlight 上の PixelGames ペイウォール" data-path="images/pixelgames/mobile/paywall-testflight.png" width="2274" height="1470" data-path="images/pixelgames/mobile/paywall-testflight.png" />
</Frame>

これが実際にプレイヤーが目にするものです。Expo Go のテストダイアログの代わりに実際の購入確認が
表示され、デフォルトのレイアウトの代わりにカスタマイズされたデザインが表示されます。

## App Store Connect に同期する

同期を行うと、RevenueCat または Replit Agent から直接、アプリ内サブスクリプションやプロダクトを
作成・変更できるようになります。

App Store Connect を接続する前に、次の3つを準備しておく必要があります。

* **登録**: まだの場合は Apple Developer Program に登録します。年会費がかかります。
* **送信**: まだの場合はアプリを App Store に送信します。[アプリをアップロードする](/ja/build/mobile-upload-ios)
  をご覧ください。RevenueCat がプロダクトを同期するにはアプリのレコードが必要です。
* **接続**: 銀行口座を接続し、Apple の Paid Apps Agreement に**署名**します。どちらも App Store
  Connect 内で行います。これらがないと Apple は支払いを処理しません。

<Steps>
  <Step title="Replit から同期を開始する">
    Replit で **Publishing → Manage** を開き、**Sync RevenueCat to App Store Connect** を選択します。
    このボタンは、アプリが TestFlight に送信されると表示されます。

    <Frame caption="Replit の Publishing ペインから同期を開始する。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step1.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=db78d8d81b07f88f65b5e0d689ed1427" alt="Manage タブが開かれ、Sync RevenueCat to App Store Connect ボタンが表示された Replit の Publishing ペイン" data-path="images/pixelgames/mobile/rev-co-step1.png" width="997" height="420" data-path="images/pixelgames/mobile/rev-co-step1.png" />
    </Frame>
  </Step>

  <Step title="App Store Connect API ページを開く">
    App Store Connect で **Users and Access → Integrations → App Store Connect API**
    （[直接開く](https://appstoreconnect.apple.com/access/integrations/api)）に移動し、
    **+** を選択して新しいキーを追加します。

    <Frame caption="App Store Connect API キーに移動する。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step2.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=3ee0f35c3bf64afebaeb6c4f64a172ba" alt="App Store Connect の Users and Access ページ、Integrations タブ、App Store Connect API セクション" data-path="images/pixelgames/mobile/rev-co-step2.png" width="1466" height="657" data-path="images/pixelgames/mobile/rev-co-step2.png" />
    </Frame>
  </Step>

  <Step title="キーを生成する">
    名前を付け（例:「RevenueCat」）、**Access** を **App Manager** に設定して、**Generate** を
    選択します。

    <Frame caption="RevenueCat 用の App Store Connect API キーを生成する。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step3.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=5711ebfa2d1bab0e108e944598bc5da9" alt="名前フィールドと App Manager アクセスが選択された Generate API Key モーダル" data-path="images/pixelgames/mobile/rev-co-step3.png" width="1453" height="436" data-path="images/pixelgames/mobile/rev-co-step3.png" />
    </Frame>
  </Step>

  <Step title="キーの詳細をコピーする">
    **Key ID** をコピーして、キーファイルをダウンロードします。

    <Frame caption="Key ID をコピーして App Store Connect API キーをダウンロードする。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step4.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=2d1f05ed614a71e51d1425ee4d7b6c43" alt="新しい RevenueCat キーと、Copy および Download アクションが表示された App Store Connect API キーの一覧" data-path="images/pixelgames/mobile/rev-co-step4.png" width="1522" height="695" data-path="images/pixelgames/mobile/rev-co-step4.png" />
    </Frame>
  </Step>

  <Step title="Replit に追加する">
    Replit の同期モーダル（Step 1 of 2）に戻り、キーファイルをアップロードして **Key ID** と
    **Issuer ID** を貼り付け、**Continue** を選択します。

    <Frame caption="Replit に App Store Connect API キーを入力する。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step5.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=5a0cdf7dbf416d708b5e8c3a6b691f21" alt="App Store Connect API キーをアップロードし、その詳細を貼り付ける Replit モーダルの Step 1 of 2" data-path="images/pixelgames/mobile/rev-co-step5.png" width="995" height="591" data-path="images/pixelgames/mobile/rev-co-step5.png" />
    </Frame>
  </Step>

  <Step title="In-App Purchase キーについても同様に行う">
    App Store Connect の同じ場所で、今度は **In-App Purchase** タブを開き
    （[直接開く](https://appstoreconnect.apple.com/access/integrations/api/subs)）、
    別のキーを生成してその詳細をコピーします。

    <Frame caption="In-App Purchase API キーを生成してコピーする。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step6.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=9ca61ec4c150cb443dc4b0b02531bd6d" alt="Download と Copy アクションが表示された App Store Connect の In-App Purchase キー一覧" data-path="images/pixelgames/mobile/rev-co-step6.png" width="1547" height="593" data-path="images/pixelgames/mobile/rev-co-step6.png" />
    </Frame>
  </Step>

  <Step title="Replit に追加する">
    Replit の同期モーダル（Step 2 of 2）に戻り、このキーファイルもアップロードして **Key ID** と
    **Issuer ID** を貼り付け、**Continue** を選択します。

    <Frame caption="Replit に In-App Purchase API キーを入力する。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step7.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=d6006070e16940bc3c0db0d09557dd0c" alt="In-App Purchase API キーをアップロードし、その詳細を貼り付ける Replit モーダルの Step 2 of 2" data-path="images/pixelgames/mobile/rev-co-step7.png" width="997" height="591" data-path="images/pixelgames/mobile/rev-co-step7.png" />
    </Frame>
  </Step>

  <Step title="確認して同期する">
    同期が完了すると、Replit の同じ **Publishing → Manage** ペインからいつでもプロダクトの価格を
    手動で変更できます。

    <Frame caption="App Store Connect に同期する前にプロダクトを確認する。">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/rev-co-step8.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=0748e90c6246378f73f129cbc1f8d0e5" alt="同期準備が整ったプレミアム月額サブスクリプションが表示された Replit の Products to Sync 画面" data-path="images/pixelgames/mobile/rev-co-step8.png" width="996" height="550" data-path="images/pixelgames/mobile/rev-co-step8.png" />
    </Frame>
  </Step>
</Steps>

## トラブルシューティング

* **購入は成功するが何もアンロックされない:** RevenueCat のエンタイトルメントが正しいプロダクト
  ID にマッピングされているか確認してください。
* **テストでは動作するが公開後は動作しない:** プロダクトが App Store Connect に同期されていること、
  Apple の Paid Apps Agreement に署名済みであることを確認してください。

## よくある質問

<AccordionGroup>
  <Accordion title="RevenueCat を使うには銀行口座が必要ですか？">
    いいえ。アカウントの作成にはメールアドレスとパスワードだけが必要です。銀行口座は、支払いを
    受け取る準備ができた時点で、Apple または Google を通じて別途接続します。
  </Accordion>

  <Accordion title="テスト購入には課金されますか？">
    いいえ。Replit のプレビューは RevenueCat のテストモードを使用しており、購入はシミュレートされます。
    実際の課金は、Apple がアプリを App Store 向けに承認してから開始されます。
  </Accordion>

  <Accordion title="RevenueCat で何を設定できますか？">
    価格、エンタイトルメント、そしてペイウォール自体です。変更は何でも Agent に依頼すれば、
    RevenueCat の設定とアプリのコードの両方が更新されます。
  </Accordion>
</AccordionGroup>

## 次のステップ

<CardGroup cols={2}>
  <Card title="レビューと評価を集める" icon="star" href="/ja/build/mobile-collect-reviews">
    満足しているプレイヤーに PixelGames の評価を依頼しましょう。
  </Card>
</CardGroup>

## 関連

* [モバイルアプリに画像を保存する](/ja/build/mobile-store-images)
* [App Store に送信する](/ja/build/mobile-publish-ios)
* [Google Play に送信する](/build/mobile-publish-android)
