CapacitorのSDKでFlowとPaywall Builderによる購入を有効にする
アプリ内課金を有効にするには、3つの重要な概念を理解する必要があります。
- プロダクト – ユーザーが購入できるもの(サブスクリプション、消耗型アイテム、永続アクセス)
- フロー&ペイウォール – ノーコードのフロー&ペイウォールビルダーで作成する、プロダクトをユーザーに提示する画面。SDKは
getFlowで取得します。独自のコードでUIを構築したい場合は、カスタムペイウォールの実装を参照してください。 - プレースメント – アプリ内でフロー&ペイウォールを表示する場所とタイミング(
main、onboarding、settingsなど)。ダッシュボードでプレースメントに紐付け、コード内でプレースメントIDを使って取得します。これにより、A/B テストの実施や、ユーザーごとに異なる内容を表示することが簡単にできます。
Adapty では、アプリに課金機能を実装する方法を3つ提供しています。アプリの要件に合わせて選択してください。
| 実装方法 | 複雑さ | 使用場面 |
|---|---|---|
| Adapty Flow & ペイウォールビルダー | ✅ 簡単 | ノーコードビルダーで購入対応済みのフローまたはペイウォールを作成します。Adapty が自動でレンダリングし、複雑な購入ロジック、レシート検証、サブスクリプション管理をすべて裏側で処理します。 |
| カスタムペイウォール | 🟡 中程度 | アプリのコードでペイウォール UI を実装しつつ、プロダクト提供の柔軟性を保つために Adapty からフローオブジェクトを取得します。ガイドを参照してください。 |
| オブザーバーモード | 🔴 難しい | 独自の購入処理インフラがすでにあり、それを引き続き使用したい場合に選択します。オブザーバーモードには Adapty 上でいくつかの制限があります。記事を参照してください。 |
以下の手順では、Adapty Flow & Paywall Builderで作成したフローまたはペイウォールを実装する方法を説明します。
ペイウォールのUIを独自に構築したい場合は、カスタムペイウォールの実装をご覧ください。
Adapty Flow & Paywall Builderで作成したフローまたはペイウォールをアプリに表示するには、アプリのコード内で以下の操作を行うだけです。
- フローまたはペイウォールを取得する: Adaptyから取得します。
- 表示するだけで、購入処理はAdaptyが担当: アプリにビューを表示します。
- ボタンアクションを処理する: ユーザー操作とアプリの応答を紐付けます。たとえば、ユーザーがボタンをクリックしたときにリンクを開いたり、ペイウォールを閉じたりします。
始める前に
始める前に、以下の手順を完了してください:
- Adapty ダッシュボードでアプリを App Store および/または Google Play に接続する。
- Adapty でプロダクトを作成する。
- フローまたはペイウォールを作成し、プロダクトを追加する。
- プレースメントを作成し、フローまたはペイウォールを追加する。
- アプリのコードに Adapty SDK をインストールして有効化する。このガイドでは Adapty Capacitor SDK v4 の API を使用します。
1. フローまたはペイウォールを取得する
フローとペイウォールは、ダッシュボードで設定されたプレースメントに紐付いています。プレースメントを使うと、オーディエンスごとに異なるフローやペイウォールを表示したり、A/B テストを実施したりできます。
Adapty Flow & Paywall Builder で作成したフローまたはペイウォールを取得するには、getFlow メソッドを使ってプレースメント ID から flow オブジェクトを取得します。フローには、表示に必要な UI 要素とスタイル情報が含まれています。
try {
const flow = await adapty.getFlow({
placementId: 'YOUR_PLACEMENT_ID',
});
// the requested flow
} catch (error) {
// handle the error
}
2. フローまたはペイウォールを表示する
フローを取得したら、あとは数行追加するだけで表示できます。
createFlowView メソッドで view を作成し、イベントハンドラーを設定して、view.present() を呼び出します。各 view は一度しか使用できません。フローを再度表示する必要がある場合は、createFlowView をもう一度呼び出して新しい view インスタンスを作成してください。
try {
const view = await createFlowView(flow);
await view.setEventHandlers({
onPurchaseCompleted(purchaseResult, product) {
return purchaseResult.type === 'success'; // close the flow on a successful purchase, keep it open for cancelled or pending purchases
},
});
await view.present();
} catch (error) {
// handle the error
}
フローまたはペイウォールの表示方法の詳細については、ガイドをご覧ください。
3. ボタンアクションを処理する
フローやペイウォールでユーザーがボタンをクリックすると、Capacitor SDK は購入・復元・画面の閉じる操作・URL の開く操作を自動的に処理します。
ただし、カスタムまたは事前定義された ID を持つボタンについては、コード内でアクションを処理する必要があります。また、デフォルトの動作をオーバーライドしたい場合もあります。
たとえば、以下は閉じるボタンのデフォルトの動作です。コードに追加する必要はありませんが、必要な場合にどのように実装するかを確認できます。
const unsubscribe = await view.setEventHandlers({
onCloseButtonPress() {
return true; // allow the flow to close
},
});
次のステップ
ご質問やお困りのことがあれば、サポートフォーラムをご覧ください。よくある質問への回答を見つけたり、ご自身の質問を投稿することができます。チームとコミュニティがサポートいたします!
フローまたはペイウォールをアプリに表示する準備ができました。購入をテストして、フローからテスト購入を完了できることを確認しましょう。
次に、ユーザーのアクセスレベルを確認して、適切なユーザーにペイウォールを表示したり、有料機能へのアクセスを付与したりできるようにする必要があります。
完全な使用例
このガイドの全手順をアプリに統合する方法を以下に示します。
export async function showFlow() {
try {
const flow = await adapty.getFlow({
placementId: 'YOUR_PLACEMENT_ID',
});
const view = await createFlowView(flow);
await view.setEventHandlers({
onCloseButtonPress() {
return true;
},
onPurchaseCompleted(purchaseResult, product) {
return purchaseResult.type === 'success'; // close the flow on a successful purchase, keep it open for cancelled or pending purchases
},
});
await view.present();
} catch (error) {
// handle any error that may occur during the process
console.warn('Error showing flow:', error);
}
}