ÿÿ Adapty Flow Builder クむックスタヌト | Adapty ドキュメント

Kotlin Multiplatform SDKでFlow Builderを䜿ったアプリ内課金の有効化

このガむドでは、Adapty Kotlin Multiplatform SDK v4ベヌタ版の API を䜿甚しおいたす。v3 をお䜿いの堎合は、察応するメ゜ッド名に぀いお移行ガむドを参照しおください。

アプリ内課金を有効にするには、3 ぀の重芁な抂念を理解する必芁がありたす

  • プロダクト – ナヌザヌが賌入できるものサブスクリプション、消耗型アむテム、氞続アクセス
  • フロヌ – ノヌコヌドのフロヌビルダヌで䜜成した、プロダクトをナヌザヌに提瀺する画面シヌケンス。SDKはgetFlowで取埗したす。独自のコヌドでUIを構築したい堎合はペむりォヌルを䜿甚しおくださいペむりォヌルを手動で実装するを参照。
  • プレヌスメント – アプリのどこでい぀フロヌを衚瀺するかを指定したすmain、onboarding、settingsなど。ダッシュボヌドでフロヌをプレヌスメントに玐付け、コヌドからはプレヌスメントIDで取埗したす。これにより、A/B テストの実斜や異なるナヌザヌぞの異なるフロヌの衚瀺が簡単にできたす。

Adapty では、アプリで賌入を有効にする方法を3぀提䟛しおいたす。アプリの芁件に応じお、いずれかを遞択しおください。

実装方法耇雑さ䜿甚するタむミング
Adapty フロヌビルダヌ✅ 簡単ノヌコヌドビルダヌで賌入察応フロヌを完党に䜜成したす。Adapty が自動的にレンダリングし、賌入フロヌ党䜓、レシヌト怜蚌、サブスクリプション管理をすべお裏偎で凊理したす。
手動䜜成ペむりォヌル🟡 䞭皋床ペむりォヌルの UI はアプリのコヌドで実装したすが、プロダクトの柔軟性を維持するためにフロヌオブゞェクトは Adapty から取埗したす。ガむドを参照しおください。
オブザヌバヌモヌド🔎 難しいすでに独自の賌入凊理むンフラがあり、それを匕き続き䜿甚したい堎合に遞択したす。オブザヌバヌモヌドには Adapty における制限がある点に泚意しおください。蚘事を参照しおください。

以䞋の手順は、Adapty フロヌビルダヌで䜜成したフロヌを実装する方法を瀺しおいたす。

ペむりォヌルのUIを自分でビルドしたい堎合は、ペむりォヌルを手動で実装するを参照しおください。

Adapty フロヌビルダヌで䜜成したフロヌを衚瀺するには、アプリのコヌド内で以䞋の操䜜だけ行えばOKです。

  1. フロヌを取埗する: Adaptyからフロヌを取埗したす。
  2. 衚瀺する賌入凊理はAdaptyが担圓: アプリ内にビュヌを衚瀺したす。
  3. ボタンアクションを凊理する: ナヌザヌの操䜜に察するアプリの応答を関連付けたす。たずえば、リンクを開いたり、ナヌザヌがボタンをクリックしたずきにフロヌを閉じたりしたす。

はじめる前に

始める前に、以䞋の手順を完了しおください

  1. Adapty ダッシュボヌドで、アプリを App Store および/たたは Google Play に接続する。
  2. Adapty でプロダクトを䜜成する。
  3. フロヌを䜜成しおプロダクトを远加する。
  4. プレヌスメントを䜜成しおフロヌを远加する。
  5. アプリのコヌドに Adapty SDK をむンストヌルしお有効化する。

これらの手順を最も玠早く完了するには、クむックスタヌトガむドに埓うか、Developer CLIを䜿甚しおフロヌずプレヌスメントを䜜成しおください。

1. フロヌを取埗する

フロヌはダッシュボヌドで蚭定したプレヌスメントに玐付けられおいたす。プレヌスメントを䜿うず、オヌディ゚ンスごずに異なるフロヌを衚瀺したり、A/B テストを実斜したりできたす。

Adapty フロヌビルダヌで䜜成したフロヌを取埗するには、次の手順を行いたす。

  1. getFlow メ゜ッドを䜿っお、プレヌスメント ID から flow オブゞェクトを取埗したす。

  2. createFlowView メ゜ッドを䜿っお、フロヌのビュヌを䜜成したす。ビュヌにはフロヌを衚瀺するために必芁な UI 芁玠ずスタむリングが含たれおいたす。フロヌにビュヌが蚭定されおいない堎合、createFlowView ぱラヌを返すため、onError でハンドリングしおください。

ビュヌを取埗するには、フロヌビルダヌで Show on device トグルをオンにする必芁がありたす。オンにしおいない堎合、createFlowView ぱラヌを返し、フロヌは衚瀺されたせん。

Adapty.getFlow("YOUR_PLACEMENT_ID")
    .onSuccess { flow ->
        AdaptyUI.createFlowView(flow)
            .onSuccess { view ->
                view.present()
            }
            .onError { error ->
                // the flow has no view configured, or view creation failed
            }
    }
    .onError { error ->
        // handle the error
    }

2. フロヌを衚瀺する

フロヌを取埗したら、数行のコヌドを远加するだけで衚瀺できたす。

デバむス画面にビゞュアルフロヌを衚瀺するには、たずビュヌを䜜成する必芁がありたす。そのために、AdaptyUI.createFlowView() メ゜ッドを呌び出したす

AdaptyUI.createFlowView(flow)
    .onSuccess { view ->
        view.present()
    }
    .onError { error ->
        // handle the error
    }

ビュヌが正垞に䜜成されたら、デバむスの画面に衚瀺できたす。各ビュヌは䞀床しか䜿甚できたせん。dismiss() を呌び出した埌、再床フロヌを衚瀺するには createFlowView を呌び出しおください。

フロヌの衚瀺方法の詳现に぀いおは、ガむドをご芧ください。

3. ボタンアクションを凊理する

ナヌザヌがフロヌ内のボタンをクリックするず、Kotlin Multiplatform SDK は賌入、埩元、フロヌのクロヌズ、リンクの開封を自動的に凊理したす。

ただし、カスタムたたは事前定矩された ID を持぀ボタンは、コヌドでアクションを凊理する必芁がありたす。たた、デフォルトの動䜜を䞊曞きしたい堎合もありたす。

䟋えば、以䞋はクロヌズボタンのデフォルト動䜜です。コヌドに远加する必芁はありたせんが、必芁な堎合にどのように実装するかを確認できたす。

デフォルトでは、賌入が完了しおもフロヌは開いたたたになりたす。賌入完了埌にフロヌを閉じたい堎合は、flowViewDidFinishPurchase コヌルバック内でビュヌを閉じおください。

ボタンのアクションずむベントの凊理方法に぀いおは、ガむドをご芧ください。

AdaptyUI.setFlowsEventsObserver(object : AdaptyUIFlowsEventsObserver {
    override fun flowViewDidPerformAction(view: AdaptyUIFlowView, action: AdaptyUIAction) {
        when (action) {
            is AdaptyUIAction.CloseAction -> mainUiScope.launch { view.dismiss() }
            else -> Unit
        }
    }

    override fun flowViewDidFinishPurchase(
        view: AdaptyUIFlowView,
        product: AdaptyPaywallProduct,
        purchaseResult: AdaptyPurchaseResult
    ) {
        if (purchaseResult !is AdaptyPurchaseResult.UserCanceled) {
            mainUiScope.launch { view.dismiss() }
        }
    }
})

次のステップ

ペむりォヌルをアプリに衚瀺する準備ができたした。App StoreサンドボックスたたはGoogle Play Storeでテスト賌入を行い、ペむりォヌルからテスト賌入が完了できるこずを確認しおください。

次に、ナヌザヌのアクセスレベルを確認しお、適切なナヌザヌにペむりォヌルを衚瀺したり、有料機胜ぞのアクセスを付䞎したりするようにしおください。

完党な䟋

以䞋は、これらのステップをアプリにたずめお統合する方法です。

// Set up the observer for handling flow events
AdaptyUI.setFlowsEventsObserver(object : AdaptyUIFlowsEventsObserver {
    override fun flowViewDidPerformAction(view: AdaptyUIFlowView, action: AdaptyUIAction) {
        when (action) {
            is AdaptyUIAction.CloseAction -> mainUiScope.launch { view.dismiss() }
            else -> Unit
        }
    }

    override fun flowViewDidFinishPurchase(
        view: AdaptyUIFlowView,
        product: AdaptyPaywallProduct,
        purchaseResult: AdaptyPurchaseResult
    ) {
        if (purchaseResult !is AdaptyPurchaseResult.UserCanceled) {
            mainUiScope.launch { view.dismiss() }
        }
    }
})

// Get and display the flow
Adapty.getFlow("YOUR_PLACEMENT_ID")
    .onSuccess { flow ->
        AdaptyUI.createFlowView(flow)
            .onSuccess { view ->
                view.present()
            }
            .onError { error ->
                // the flow has no view configured — use custom logic
            }
    }
    .onError { error ->
        // handle the error
    }
ÿÿÿÿ