Adapty Android SDK を v. 4.0 へ移行する

Adapty Android SDK 4.0(ベータ)ではフローが導入され、ペイウォール API の名称が変更されました。新しい API は新しい Flow Builder と既存の Paywall Builder の両方で動作します。Adapty ダッシュボード側での設定変更は不要です。

クイックリファレンス

v3v4
Adapty.getPaywall(placementId, locale)Adapty.getFlow(placementId)
Adapty.getPaywallForDefaultAudience(placementId, locale)Adapty.getFlowForDefaultAudience(placementId)
AdaptyUI.getViewConfiguration(paywall)AdaptyUI.getFlowConfiguration(flow, locale)
AdaptyUI.LocalizedViewConfigurationAdaptyUI.FlowConfiguration
Adapty.getPaywallProducts(paywall)Adapty.getPaywallProducts(flow)
Adapty.logShowPaywall(paywall)Adapty.logShowFlow(flow)
AdaptyPaywallAdaptyFlow
AdaptyUI.getPaywallView(...)AdaptyUI.getFlowView(...)
AdaptyPaywallViewAdaptyFlowView
AdaptyPaywallScreen (Compose)AdaptyFlowScreen
showPaywall(...)showFlow(...)
AdaptyPaywallInsetsAdaptyFlowInsets
AdaptyUiEventListenerAdaptyFlowEventListener
AdaptyUiDefaultEventListenerAdaptyFlowDefaultEventListener
onPaywallShown / onPaywallClosedonFlowShown / onFlowClosed
onRenderingErroronError
Adapty.updateAttribution(attribution, source) (source: String)Adapty.updateAttribution(attribution, source) (source: AdaptyAttributionSource)
Adapty.setIntegrationIdentifier(key, value)Adapty.setIntegrationIdentifier(AdaptyIntegrationIdentifier)
AdaptyPaywallProduct はその名前を保持します。プロダクトは引き続きフローに属しており、getPaywallProductsAdaptyFlow を受け取るようになります。その他の AdaptyFlowEventListener メソッド(onProductSelectedonPurchaseStartedonPurchaseFinishedonPurchaseFailureonRestoreSuccessonRestoreFailureonActionPerformedonAwaitingPurchaseParamsonLoadingProductsFailure など)は、名前とシグネチャを変更しません。

インストール

Adapty Android SDK 4.0 はプレリリース版のため、動的なバージョン範囲ではなく正確なバージョンを指定する必要があります。adapty-bom のバージョンを 4.0.0-beta.1 に設定してプロジェクトを同期してください。BOM が対応する android-sdkandroid-ui のバージョンを自動で解決します。依存関係の宣言方法については、Adapty SDK のインストール を参照してください。

削除および非推奨のAPI

  • Adapty.makePurchase(activity, product, subscriptionUpdateParams, isOfferPersonalized, callback) — 削除されました。このオーバーロードはv3で非推奨になりました。代わりに AdaptyPurchaseParameters を使って同じオプションを渡してください:
- Adapty.makePurchase(activity, product, subscriptionUpdateParams, isOfferPersonalized) { result -> /* ... */ }
+ val params = AdaptyPurchaseParameters.Builder()
+     .withSubscriptionUpdateParams(subscriptionUpdateParams)
+     .withOfferPersonalized(isOfferPersonalized)
+     .build()
+ Adapty.makePurchase(activity, product, params) { result -> /* ... */ }
  • オンボーディングは非推奨です。 AdaptyUI.getOnboardingView および AdaptyUI.getOnboardingConfiguration は 4.0 で @Deprecated としてマークされています — オンボーディングを フロービルダー で作成したフローに移行してください。

フローの取得

getPaywall + getViewConfiguration → getFlow + getFlowConfiguration

フェッチの戻り値の型が AdaptyPaywall から AdaptyFlow に変わり、設定ローダーの名前が AdaptyUI.getViewConfiguration から AdaptyUI.getFlowConfiguration に変更されます(戻り値も AdaptyUI.LocalizedViewConfiguration の代わりに AdaptyUI.FlowConfiguration を返します)。locale パラメータはフェッチ呼び出しから getFlowConfiguration に移動します:

- Adapty.getPaywall("YOUR_PLACEMENT_ID", locale = "en") { result ->
+ Adapty.getFlow("YOUR_PLACEMENT_ID") { result ->
      if (result is AdaptyResult.Success) {
-         val paywall = result.value
-         if (!paywall.hasViewConfiguration) return@getPaywall
-         AdaptyUI.getViewConfiguration(paywall) { configResult ->
+         val flow = result.value
+         if (!flow.hasViewConfiguration) return@getFlow
+         AdaptyUI.getFlowConfiguration(flow, locale = "en") { configResult ->
              if (configResult is AdaptyResult.Success) {
                  val flowConfiguration = configResult.value
              }
          }
      }
  }

getPaywallProducts(paywall) → getPaywallProducts(flow)

getPaywallProducts は、Adapty.getFlow が返す AdaptyFlow を受け取るようになりました:

- Adapty.getPaywallProducts(paywall) { result -> /* products */ }
+ Adapty.getPaywallProducts(flow) { result -> /* products */ }

フローのビュー数トラッキング

logShowPaywall → logShowFlow

logShowPaywalllogShowFlow に名前が変更され、AdaptyPaywall の代わりに AdaptyFlow を受け取るようになりました。イベントは引き続き同じバリアションに対して記録されるため、既存のファネルや A/B テストの指標はダッシュボードを変更せずにそのまま機能します。

- Adapty.logShowPaywall(paywall)
+ Adapty.logShowFlow(flow)

v3 と同様に、フロービルダーペイウォールビルダーでレンダリングされたフローやペイウォールを表示する際は、このメソッドを呼び出す必要はありません。Adapty がそれらのビューを自動的に追跡します。

フローの表示

getPaywallView / AdaptyPaywallView → getFlowView / AdaptyFlowView

ファクトリーメソッドとビュータイプをリネームし、AdaptyUI.FlowConfiguration を渡します:

- val paywallView = AdaptyUI.getPaywallView(
-     activity,
-     viewConfiguration,
-     products,
-     eventListener,
- )
+ val flowView = AdaptyUI.getFlowView(
+     activity,
+     flowConfiguration,
+     products,
+     eventListener,
+ )

ビューを直接作成する場合は、showメソッドもリネームされます:

- val paywallView = AdaptyPaywallView(activity)
- paywallView.showPaywall(viewConfiguration, products, eventListener)
+ val flowView = AdaptyFlowView(activity)
+ flowView.showFlow(flowConfiguration, products, eventListener)

XML レイアウトでは、ビュータグを次のように更新してください:

- <com.adapty.ui.AdaptyPaywallView ... />
+ <com.adapty.ui.AdaptyFlowView ... />

オプションの personalizedOfferResolver パラメータが getFlowView / showFlow / AdaptyFlowScreen から削除されました。パーソナライズ価格を示すには、onAwaitingPurchaseParams を通じてプロダクトごとに設定してください(AdaptyPurchaseParameters.Builder().withOfferPersonalized(true))。新しいオプションの customAssets パラメータを使用すると、実行時に画像や動画をオーバーライドできます — アセットのカスタマイズを参照してください。

AdaptyPaywallScreen → AdaptyFlowScreen

Jetpack Compose では、コンポーザブルの名前を変更し、設定パラメータを更新します:

- AdaptyPaywallScreen(
-     viewConfiguration,
+ AdaptyFlowScreen(
+     flowConfiguration,
      products,
      eventListener,
  )

イベントの処理

イベントリスナーの名前が AdaptyUiEventListener から AdaptyFlowEventListener に変更されました(また AdaptyUiDefaultEventListenerAdaptyFlowDefaultEventListener に変更)。ほとんどのメソッド名は変わりませんが、ライフサイクルおよびレンダリングに関するコールバックは名前が変更されています:

- class YourListener : AdaptyUiDefaultEventListener() {
+ class YourListener : AdaptyFlowDefaultEventListener() {

-     override fun onPaywallShown(context: Context) {}
-     override fun onPaywallClosed() {}
+     override fun onFlowShown(context: Context) {}
+     override fun onFlowClosed() {}

-     override fun onRenderingError(error: AdaptyError, context: Context) {}
+     override fun onError(error: AdaptyError, context: Context) {}
  }

既存のハンドラー本体はコードを変更する必要はありません。型名とオーバーライドの名前を変更するだけです。onError は、onRenderingError が対象としていたのと同じレンダリングエラーに加えて、その他の購入以外のランタイムエラーも対象としています。コールバックの完全な一覧については、フロー&ペイウォールイベントの処理を参照してください。

アトリビューションと統合識別子

updateAttribution

source パラメーターが String 型から新しい AdaptyAttributionSource 型に変更され、attributionMap<String, Any> になりました(JSON String のオーバーロードも利用可能です)。事前定義されたソースのいずれかを使用してください:

- Adapty.updateAttribution(attribution, "appsflyer") { error -> /* handle the error */ }
+ Adapty.updateAttribution(attribution, AdaptyAttributionSource.APPSFLYER) { error -> /* handle the error */ }

定義済みのソース: AdaptyAttributionSource.APPLE_ADS.ADJUST.APPSFLYER.BRANCH.TENJIN。その他のソースには、文字列からソースを作成してください: AdaptyAttributionSource("your_source")

setIntegrationIdentifier

setIntegrationIdentifier(key, value) は、1つまたは複数の AdaptyIntegrationIdentifier 値を受け取るメソッドに置き換えられました。生の文字列キーの代わりに、定義済みの Key 定数を使用してください:

- Adapty.setIntegrationIdentifier("appsflyer_id", appsFlyerId) { error -> /* handle the error */ }
+ Adapty.setIntegrationIdentifier(
+     AdaptyIntegrationIdentifier(AdaptyIntegrationIdentifier.Key.APPSFLYER_ID, appsFlyerId)
+ ) { error -> /* handle the error */ }

1回の呼び出しで複数の識別子を設定することもできます:

Adapty.setIntegrationIdentifier(
    listOf(
        AdaptyIntegrationIdentifier(AdaptyIntegrationIdentifier.Key.APPSFLYER_ID, appsFlyerId),
        AdaptyIntegrationIdentifier(AdaptyIntegrationIdentifier.Key.ADJUST_DEVICE_ID, adjustDeviceId),
    )
) { error -> /* handle the error */ }

古いキー文字列をそれぞれの Key 定数に置き換えてください:

v3 キーv4 AdaptyIntegrationIdentifier.Key
"adjust_device_id"ADJUST_DEVICE_ID
"airbridge_device_id"AIRBRIDGE_DEVICE_ID
"amplitude_user_id"AMPLITUDE_USER_ID
"amplitude_device_id"AMPLITUDE_DEVICE_ID
"appmetrica_device_id"APPMETRICA_DEVICE_ID
"appmetrica_profile_id"APPMETRICA_PROFILE_ID
"appsflyer_id"APPSFLYER_ID
"branch_id"BRANCH_ID
"facebook_anonymous_id"FACEBOOK_ANONYMOUS_ID
"firebase_app_instance_id"FIREBASE_APP_INSTANCE_ID
"mixpanel_user_id"MIXPANEL_USER_ID
"one_signal_subscription_id"ONE_SIGNAL_SUBSCRIPTION_ID
"one_signal_player_id"ONE_SIGNAL_PLAYER_ID
"posthog_distinct_user_id"POSTHOG_DISTINCT_USER_ID
"pushwoosh_hwid"PUSHWOOSH_HWID
"tenjin_analytics_installation_id"TENJIN_ANALYTICS_INSTALLATION_ID