Adapty Android SDK を v. 4.0 へ移行する
Adapty Android SDK 4.0(ベータ)ではフローが導入され、ペイウォール API の名称が変更されました。新しい API は新しい Flow Builder と既存の Paywall Builder の両方で動作します。Adapty ダッシュボード側での設定変更は不要です。
クイックリファレンス
| v3 | v4 |
|---|---|
Adapty.getPaywall(placementId, locale) | Adapty.getFlow(placementId) |
Adapty.getPaywallForDefaultAudience(placementId, locale) | Adapty.getFlowForDefaultAudience(placementId) |
AdaptyUI.getViewConfiguration(paywall) | AdaptyUI.getFlowConfiguration(flow, locale) |
AdaptyUI.LocalizedViewConfiguration | AdaptyUI.FlowConfiguration |
Adapty.getPaywallProducts(paywall) | Adapty.getPaywallProducts(flow) |
Adapty.logShowPaywall(paywall) | Adapty.logShowFlow(flow) |
AdaptyPaywall | AdaptyFlow |
AdaptyUI.getPaywallView(...) | AdaptyUI.getFlowView(...) |
AdaptyPaywallView | AdaptyFlowView |
AdaptyPaywallScreen (Compose) | AdaptyFlowScreen |
showPaywall(...) | showFlow(...) |
AdaptyPaywallInsets | AdaptyFlowInsets |
AdaptyUiEventListener | AdaptyFlowEventListener |
AdaptyUiDefaultEventListener | AdaptyFlowDefaultEventListener |
onPaywallShown / onPaywallClosed | onFlowShown / onFlowClosed |
onRenderingError | onError |
Adapty.updateAttribution(attribution, source) (source: String) | Adapty.updateAttribution(attribution, source) (source: AdaptyAttributionSource) |
Adapty.setIntegrationIdentifier(key, value) | Adapty.setIntegrationIdentifier(AdaptyIntegrationIdentifier) |
AdaptyPaywallProduct はその名前を保持します。プロダクトは引き続きフローに属しており、getPaywallProducts は AdaptyFlow を受け取るようになります。その他の AdaptyFlowEventListener メソッド(onProductSelected、onPurchaseStarted、onPurchaseFinished、onPurchaseFailure、onRestoreSuccess、onRestoreFailure、onActionPerformed、onAwaitingPurchaseParams、onLoadingProductsFailure など)は、名前とシグネチャを変更しません。 |
インストール
Adapty Android SDK 4.0 はプレリリース版のため、動的なバージョン範囲ではなく正確なバージョンを指定する必要があります。adapty-bom のバージョンを 4.0.0-beta.1 に設定してプロジェクトを同期してください。BOM が対応する android-sdk と android-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
logShowPaywall は logShowFlow に名前が変更され、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 に変更されました(また AdaptyUiDefaultEventListener は AdaptyFlowDefaultEventListener に変更)。ほとんどのメソッド名は変わりませんが、ライフサイクルおよびレンダリングに関するコールバックは名前が変更されています:
- 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 型に変更され、attribution は Map<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 |