Android SDKでFlow & Paywall Builderを使ってアプリ内課金を有効にする LLM 用にコピー Markdown で表示 ツールをインストール アプリ内課金を有効にするには、3つの重要な概念を理解する必要があります。
プロダクト – ユーザーが購入できるもの(サブスクリプション、消耗型アイテム、永続アクセス)
フロー & ペイウォール – ノーコードのフロー & ペイウォールビルダーで作成した、プロダクトをユーザーに提示する画面。SDKはgetFlowを通じて取得します。独自のコードでUIを構築したい場合は、カスタムペイウォールの実装 を参照してください。
プレースメント – アプリ内でフロー & ペイウォールを表示する場所とタイミング(main、onboarding、settingsなど)。ダッシュボードでプレースメントに紐付けてから、コード内でプレースメントIDを指定してリクエストします。これにより、A/B テストの実施や、ユーザーごとに異なる表示が簡単に行えます。
Adapty では、アプリで購入機能を有効にする方法を3つ提供しています。アプリの要件に応じていずれかを選択してください。
実装方法 複雑さ 使用場面 Adapty フロー & ペイウォールビルダー ✅ 簡単 ノーコードビルダーで購入可能な完全なフローまたはペイウォールを作成 します。Adapty が自動的にレンダリングし、購入ロジック、レシート検証、サブスクリプション管理をすべて裏側で処理します。カスタムペイウォール 🟡 普通 アプリのコードでペイウォールの UI を実装しますが、プロダクト提供の柔軟性を保つために Adapty からフローオブジェクトを取得します。ガイド を参照してください。 オブザーバーモード 🔴 難しい 独自の購入処理インフラがすでにあり、そのまま使い続けたい場合に使用します。なお、オブザーバーモードには Adapty での制限があります。記事 を参照してください。
Important
以下の手順では、Adapty フロー & ペイウォールビルダーで作成したフローまたはペイウォールを実装する方法を説明します。
ペイウォール UI を自分でビルドしたい場合は、カスタムペイウォールの実装 をご覧ください。
Adapty フロー & ペイウォールビルダーで作成したフローまたはペイウォールをアプリに表示するには、アプリのコードで次の操作を行うだけです。
フローまたはペイウォールを取得する : Adaptyから取得します。
表示するだけで購入処理はAdaptyが担当 : ビューをアプリに表示します。
ボタンのアクションを処理する : ユーザー操作とアプリの応答を紐付けます。たとえば、ユーザーがボタンをタップしたときにリンクを開いたり、ペイウォールを閉じたりします。
始める前に
始める前に、以下の手順を完了してください:
Adapty ダッシュボードでアプリを Google Play に接続する 。
Adapty でプロダクトを作成する 。
フローまたはペイウォールを作成し 、プロダクトを追加する 。
プレースメントを作成し、フローまたはペイウォールを追加する 。
アプリのコードにAdapty SDK をインストールして有効化する 。このガイドでは Adapty Android SDK v4 の API を使用します。
1. フローまたはペイウォールを取得する
フローとペイウォールは、ダッシュボードで設定されたプレースメントに関連付けられています。プレースメントを使用することで、異なるオーディエンスに対して異なるフローやペイウォールを表示したり、A/B テスト を実施したりすることができます。
Adapty Flow & Paywall Builder で作成したフローまたはペイウォールを取得するには、以下の手順が必要です。
getFlow メソッドを使用してプレースメント ID から flow オブジェクトを取得し、ビュー設定が含まれているか確認します。
getFlowConfiguration メソッドを使用してビューの設定を取得します。ビューの設定には、表示に必要なUI要素とスタイリングが含まれています。
Important
ビューの設定を取得するには、フローまたはペイウォールを公開 してください。未公開の編集がある場合、フローまたはペイウォールのステータスは Dirty となり、そのプレースメントは最後に公開されたバージョンを引き続き提供します。
Adapty. getFlow ( "YOUR_PLACEMENT_ID" ) { result ->
if (result is AdaptyResult.Success) {
val flow = result. value
if ( ! flow.hasViewConfiguration) {
return @getFlow
}
AdaptyUI. getFlowConfiguration (flow) { configResult ->
if (configResult is AdaptyResult.Success) {
val flowConfiguration = configResult. value
}
}
}
}
Adapty. getFlow ( "YOUR_PLACEMENT_ID" , result -> {
if (result instanceof AdaptyResult.Success) {
AdaptyFlow flow = ((AdaptyResult.Success < AdaptyFlow > ) result). getValue ();
if ( ! flow. hasViewConfiguration ()) {
return ;
}
AdaptyUI. getFlowConfiguration (flow, configResult -> {
if (configResult instanceof AdaptyResult.Success) {
AdaptyUI.FlowConfiguration flowConfiguration =
((AdaptyResult.Success < AdaptyUI.FlowConfiguration > ) configResult). getValue ();
// use loaded configuration
}
});
}
});
2. フローまたはペイウォールを表示する
フローの設定を取得したら、あとは数行追加するだけでフローやペイウォールを表示できます。
デバイス画面にビジュアルフローを表示するには、まず設定が必要です。AdaptyUI.getFlowView() メソッドを呼び出すか、AdaptyFlowView を直接作成してください:
val flowView = AdaptyUI. getFlowView (
activity,
flowConfiguration,
null , // products = null means auto-fetch
eventListener,
) val flowView =
AdaptyFlowView (activity) // or retrieve it from xml
.. .
with (flowView) {
showFlow (
flowConfiguration,
null , // products = null means auto-fetch
eventListener,
)
} AdaptyFlowView flowView = AdaptyUI. getFlowView (
activity,
flowConfiguration,
null , // products = null means auto-fetch
eventListener
); AdaptyFlowView flowView =
new AdaptyFlowView (activity); //add to the view hierarchy if needed, or you receive it from xml
...
flowView. showFlow (flowConfiguration, products, eventListener); < com.adapty.ui.AdaptyFlowView xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
ビューが正常に作成されたら、ビュー階層に追加してデバイスの画面に表示できます。
Tip
フローやペイウォールの表示方法の詳細については、ガイド をご覧ください。
フローまたはペイウォールでユーザーがボタンをタップすると、Android SDK は購入・復元・画面閉じ・リンク開くといった処理を自動的に行います。
ただし、カスタムまたは事前定義の ID を持つボタンについては、コード側でアクションを処理する必要があります。また、デフォルトの動作をオーバーライドしたい場合もあります。
たとえば、以下は閉じるボタンのデフォルト動作の例です。コードに追加する必要はありませんが、必要な場合にどのように実装するかを確認できます。
override fun onActionPerformed (action: AdaptyUI .Action, context: Context ) {
when (action) {
AdaptyUI.Action.Close -> (context as ? Activity)?. onBackPressed () // default behavior
}
} @ Override
public void onActionPerformed (@ NonNull AdaptyUI.Action action, @ NonNull Context context) {
if (action instanceof AdaptyUI.Action.Close) {
if (context instanceof Activity) {
((Activity) context). onBackPressed ();
}
}
}
次のステップ
Tip
ご質問やお困りのことがあれば、サポートフォーラム をご覧ください。よくある質問への回答を見つけたり、ご自身の質問を投稿することができます。チームとコミュニティがサポートいたします!
フローまたはペイウォールをアプリに表示する準備が整いました。Google Play ストアで購入をテストして 、フローからテスト購入を完了できることを確認してください。
次に、ユーザーのアクセスレベルを確認 し、適切なユーザーにペイウォールを表示したり、有料機能へのアクセスを付与したりできるようにしましょう。
完全な例
これらのすべてのステップをアプリに統合する方法を示します。
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
Adapty. getFlow ( "YOUR_PLACEMENT_ID" ) { flowResult ->
if (flowResult is AdaptyResult.Success) {
val flow = flowResult. value
if ( ! flow.hasViewConfiguration) {
// Use custom logic
return @getFlow
}
AdaptyUI. getFlowConfiguration (flow) { configResult ->
if (configResult is AdaptyResult.Success) {
val flowConfiguration = configResult. value
val flowView = AdaptyUI. getFlowView (
this ,
flowConfiguration,
null , // products = null means auto-fetch
object : AdaptyFlowDefaultEventListener () {
override fun onActionPerformed (action: AdaptyUI .Action, context: Context ) {
when (action) {
is AdaptyUI.Action.Close -> {
(context as ? Activity)?. onBackPressed ()
}
}
}
}
)
setContentView (flowView)
}
}
}
}
}
}
public class MainActivity extends AppCompatActivity {
@ Override
protected void onCreate (Bundle savedInstanceState ) {
super . onCreate (savedInstanceState);
Adapty. getFlow ( "YOUR_PLACEMENT_ID" , flowResult -> {
if (flowResult instanceof AdaptyResult.Success) {
AdaptyFlow flow = ((AdaptyResult.Success < AdaptyFlow > ) flowResult). getValue ();
if ( ! flow. hasViewConfiguration ()) {
// Use custom logic
return ;
}
AdaptyUI. getFlowConfiguration (flow, configResult -> {
if (configResult instanceof AdaptyResult.Success) {
AdaptyUI.FlowConfiguration flowConfiguration =
((AdaptyResult.Success < AdaptyUI.FlowConfiguration > ) configResult). getValue ();
AdaptyFlowView flowView = AdaptyUI. getFlowView (
this ,
flowConfiguration,
null , // products = null means auto-fetch
new AdaptyFlowDefaultEventListener () {
@ Override
public void onActionPerformed (@ NonNull AdaptyUI.Action action , @ NonNull Context context ) {
if (action instanceof AdaptyUI.Action.Close) {
if (context instanceof Activity) {
((Activity) context). onBackPressed ();
}
}
}
}
);
setContentView (flowView);
}
});
}
});
}
}