Android SDKのペイウォールを使ってアプリ内課金を有効にする アプリ内課金を有効にするには、以下の3つの重要な概念を理解する必要があります。
プロダクト – ユーザーが購入できるもの(サブスクリプション、消耗型アイテム、永続アクセスなど)
ペイウォール – どのプロダクトを提供するかを定義する設定です。Adaptyでは、プロダクトを取得する唯一の方法がペイウォールです。この設計により、アプリのコードを変更せずに、提供内容・価格・プロダクトの組み合わせを変更できます。
プレースメント – アプリ内でペイウォールを表示する場所とタイミング(main、onboarding、settings など)。ダッシュボードでプレースメントにペイウォールを設定し、コードでプレースメントIDを指定して取得します。A/B テストの実施や、ユーザーごとに異なるペイウォールを表示するのも簡単です。
Adaptyでは、アプリ内課金を有効にする方法が3つあります。アプリの要件に合わせて選択してください。
実装方法 複雑さ 適しているケース Adapty ペイウォールビルダー ✅ 簡単 ノーコードビルダーで完全な購入対応ペイウォールを作成する 場合。Adaptyが自動的にレンダリングし、複雑な購入フロー・レシート検証・サブスクリプション管理をすべてバックグラウンドで処理します。手動作成のペイウォール 🟡 中程度 アプリのコードでペイウォールUIを実装しつつ、プロダクト提供の柔軟性を維持するためにAdaptyからペイウォールオブジェクトを取得する場合。ガイド を参照してください。 オブザーバーモード 🔴 難しい 独自の購入処理インフラがすでにあり、そのまま利用したい場合。ただし、オブザーバーモードにはAdaptyでの制限があります。記事 を参照してください。
Adaptyペイウォールビルダーで作成したペイウォールを表示するには、アプリのコードで以下の手順を実行するだけです。
ペイウォールを取得する : AdaptyからペイウォールOBJECTを取得します。
ペイウォールを表示し、Adaptyが購入を処理する : 取得したペイウォールコンテナをアプリに表示します。
ボタンアクションを処理する : ペイウォール上のユーザー操作とアプリの反応を関連付けます。例えば、ユーザーがボタンをクリックしたときにリンクを開いたり、ペイウォールを閉じたりします。
始める前に
始める前に、以下の手順を完了してください。
Adapty ダッシュボードでアプリをGoogle Playに接続する 。
Adaptyでプロダクトを作成する 。
ペイウォールを作成してプロダクトを追加する 。
プレースメントを作成してペイウォールを追加する 。
アプリのコードにAdapty SDKをインストールして有効化する 。
1. ペイウォールを取得する
ペイウォールはダッシュボードで設定したプレースメントに関連付けられています。プレースメントを使うと、異なるオーディエンスに異なるペイウォールを表示したり、A/B テスト を実施したりできます。
Adaptyペイウォールビルダーで作成したペイウォールを取得するには、以下の手順が必要です。
getPaywallメソッドを使ってプレースメント IDでpaywallオブジェクトを取得し、それがビルダーで作成されたペイウォールかどうかを確認します。
getViewConfigurationメソッドを使ってペイウォールのビュー設定を取得します。ビュー設定には、ペイウォールを表示するためのUI要素とスタイリング情報が含まれています。
ビュー設定を取得するには、ペイウォールビルダーの Show on device トグルをオンにする必要があります。オフのままでは空のビュー設定が返され、ペイウォールが表示されません。
Adapty. getPaywall ( "YOUR_PLACEMENT_ID" ) { result ->
if (result is AdaptyResult.Success) {
val paywall = result. value
if ( ! paywall.hasViewConfiguration) {
return @getPaywall
}
AdaptyUI. getViewConfiguration (paywall) { configResult ->
if (configResult is AdaptyResult.Success) {
val viewConfiguration = configResult. value
}
}
}
}
Adapty. getPaywall ( "YOUR_PLACEMENT_ID" , result -> {
if (result instanceof AdaptyResult.Success) {
AdaptyPaywall paywall = ((AdaptyResult.Success < AdaptyPaywall > ) result). getValue ();
if ( ! paywall. hasViewConfiguration ()) {
return ;
}
AdaptyUI. getViewConfiguration (paywall, configResult -> {
if (configResult instanceof AdaptyResult.Success) {
AdaptyUI.LocalizedViewConfiguration viewConfiguration =
((AdaptyResult.Success < AdaptyUI.LocalizedViewConfiguration > ) configResult). getValue ();
// use loaded configuration
}
});
}
});
2. ペイウォールを表示する
ペイウォールの設定が取得できたら、数行のコードを追加するだけでペイウォールを表示できます。
デバイスの画面にビジュアルペイウォールを表示するには、まず設定を行う必要があります。AdaptyUI.getPaywallView()メソッドを呼び出すか、AdaptyPaywallViewを直接作成してください。
val paywallView = AdaptyUI. getPaywallView (
activity,
viewConfiguration,
null , // products = null means auto-fetch
eventListener,
) val paywallView =
AdaptyPaywallView (activity) // or retrieve it from xml
.. .
with (paywallView) {
showPaywall (
viewConfiguration,
null , // products = null means auto-fetch
eventListener,
)
} AdaptyPaywallView paywallView = AdaptyUI. getPaywallView (
activity,
viewConfiguration,
null , // products = null means auto-fetch
eventListener,
); AdaptyPaywallView paywallView =
new AdaptyPaywallView (activity); //add to the view hierarchy if needed, or you receive it from xml
...
paywallView. showPaywall (viewConfiguration, products, eventListener); < com.adapty.ui.AdaptyPaywallView xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
ビューが正常に作成されたら、ビュー階層に追加してデバイスの画面に表示できます。
ペイウォールの表示方法の詳細については、ガイド を参照してください。
ユーザーがペイウォールのボタンをクリックすると、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 ();
}
}
}
次のステップ
ご質問やお困りのことがあれば、サポートフォーラム をご覧ください。よくある質問への回答を見つけたり、ご自身の質問を投稿することができます。チームとコミュニティがサポートいたします!
ペイウォールをアプリに表示する準備が整いました。Google Play Storeでのテスト購入 を行い、ペイウォールからテスト購入を完了できることを確認してください。
次に、適切なユーザーにペイウォールを表示したり有料機能へのアクセスを付与したりするために、ユーザーのアクセスレベルを確認する 必要があります。
完全な実装例
以下は、これらのすべての手順をアプリに統合した例です。
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
Adapty. getPaywall ( "YOUR_PLACEMENT_ID" ) { paywallResult ->
if (paywallResult is AdaptyResult.Success) {
val paywall = paywallResult. value
if ( ! paywall.hasViewConfiguration) {
// Use custom logic
return @getPaywall
}
AdaptyUI. getViewConfiguration (paywall) { configResult ->
if (configResult is AdaptyResult.Success) {
val viewConfiguration = configResult. value
val paywallView = AdaptyUI. getPaywallView (
this ,
viewConfiguration,
null , // products = null means auto-fetch
object : AdaptyUIEventListener {
override fun onActionPerformed (action: AdaptyUI .Action, context: Context ) {
when (action) {
is AdaptyUI.Action.Close -> {
(context as ? Activity)?. onBackPressed ()
}
}
}
}
)
setContentView (paywallView)
}
}
}
}
}
}
public class MainActivity extends AppCompatActivity {
@ Override
protected void onCreate (Bundle savedInstanceState ) {
super . onCreate (savedInstanceState);
Adapty. getPaywall ( "YOUR_PLACEMENT_ID" , paywallResult -> {
if (paywallResult instanceof AdaptyResult.Success) {
AdaptyPaywall paywall = ((AdaptyResult.Success < AdaptyPaywall > ) paywallResult). getValue ();
if ( ! paywall. hasViewConfiguration ()) {
// Use custom logic
return ;
}
AdaptyUI. getViewConfiguration (paywall, configResult -> {
if (configResult instanceof AdaptyResult.Success) {
AdaptyUI.LocalizedViewConfiguration viewConfiguration =
((AdaptyResult.Success < AdaptyUI.LocalizedViewConfiguration > ) configResult). getValue ();
AdaptyPaywallView paywallView = AdaptyUI. getPaywallView (
this ,
viewConfiguration,
null , // products = null means auto-fetch
new AdaptyUIEventListener () {
@ 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 (paywallView);
}
});
}
});
}
}