Adapty Unity SDK を v. 4.0 に移行する
Adapty Unity SDK 4.0 (beta) ではフローが導入され、それに伴いペイウォール API の名称が変更されました。新しい API は新しい Flow Builder と既存の Paywall Builder の両方に対応しており、Adapty ダッシュボード側での設定変更は不要です。
クイックリファレンス
| v3 | v4 |
|---|---|
Adapty.GetPaywall(placementId, locale, ...) | Adapty.GetFlow(placementId, ...) |
Adapty.GetPaywallForDefaultAudience(placementId, locale, ...) | Adapty.GetFlowForDefaultAudience(placementId, ...) |
Adapty.GetPaywallProducts(paywall, ...) | Adapty.GetPaywallProducts(flow, ...) |
Adapty.LogShowPaywall(paywall, ...) | Adapty.LogShowFlow(flow, ...) |
AdaptyPaywall | AdaptyFlow |
AdaptyUI.CreatePaywallView(paywall, ...) | AdaptyUI.CreateFlowView(flow, ...) |
AdaptyUICreatePaywallViewParameters | AdaptyUICreateFlowViewParameters |
AdaptyUIPaywallView | AdaptyUIFlowView |
AdaptyUI.PresentPaywallView(view, ...) / DismissPaywallView(view, ...) | AdaptyUI.PresentFlowView(view, ...) / DismissFlowView(view, ...) |
Adapty.SetPaywallsEventsListener(listener) | Adapty.SetFlowsEventsListener(listener) |
AdaptyPaywallsEventsListener | IAdaptyFlowsEventsListener |
AdaptyEventListener | IAdaptyEventListener |
AdaptyOnboardingsEventsListener | IAdaptyOnboardingsEventsListener |
PaywallViewDidPerformAction、PaywallViewDidAppear およびその他の PaywallView... コールバック | FlowViewDidPerformAction、FlowViewDidAppear およびその他の FlowView... コールバック |
PaywallViewDidFailRendering | FlowViewDidReceiveError |
Adapty.SetFallbackPaywalls(...) (v3 で非推奨) | 削除済み — Adapty.SetFallback(fileName, ...) を使用してください |
Builder.SetIDFACollectionDisabled(...) (v3 で非推奨) | 削除済み — Builder.SetAppleIDFACollectionDisabled(...) を使用してください |
paywall.Products (AdaptyProductReference のリスト) | 削除済み — ProductIdentifiers または VendorProductIds を使用するか、完全なプロダクト情報が必要な場合は GetPaywallProducts(flow) を呼び出してください |
AdaptyProductReference | パブリック型として削除済み — データモデルを参照してください |
paywall.RemoteConfigString | 削除済み — flow.RemoteConfig?.Data を使用してください |
AdaptyPaywallProduct はその名称を保持しており、プロダクトは引き続きフローに属しています。また、GetPaywallProducts もその名称を保持しており、現在は AdaptyFlow を受け取るようになっています。GetFlow および GetFlowForDefaultAudience メソッドでは、locale パラメーターが不要になりました。購入およびプロファイル関連のAPI(MakePurchase、RestorePurchases、GetProfile、Identify、UpdateProfile)と、SetFallback によるフォールバックは変更ありません。オンボーディングのメソッドは引き続き動作しますが、非推奨となっています。詳細はオンボーディングAPIの非推奨化を参照してください。一部のデフォルト動作が変更されています。詳細はデフォルト動作の変更を参照してください。
インストール
v4.0 はプレリリースのため、正確なベータタグを指定してください。Unity Package Manager 経由でインストールするには、Git URL にタグを追加します:
https://github.com/adaptyteam/AdaptySDK-Unity.git?path=/Packages/com.adapty.unity-sdk#4.0.0-beta.1
Unity パッケージ経由でインストールする場合は、4.0.0-beta.1 リリースから adapty-unity-plugin-4.0.0-beta.1.unitypackage をダウンロードしてください。完全なセットアップ手順については Adapty SDK のインストールを参照してください。
v4 では、ビルド設定に関して 2 つの変更があります:
- iOS の依存関係が Swift Package Manager に移行しました。 ネイティブ Adapty iOS SDK 4.0 は、CocoaPods の pod ではなく、リモートの Swift パッケージとして宣言されています。External Dependency Manager を 1.2.188 以降にアップデートしてください。それ以前のバージョンは Swift Package Manager の依存関係をサポートしていません。CocoaPods の手順(
iOS Resolver -> Install CocoapodsやUnity-iPhone.xcworkspaceを開く操作)は不要になりました。 - iOS のデプロイメントターゲットは 15.0 以降が必須です。 Unity Editor の新しいビルドバリデーターにより、ターゲットがこれより低い場合は iOS ビルドが停止されます。
The underlying native Adapty SDKs are bumped to 4.x on both platforms and are resolved automatically — no other build changes are needed.
フローの取得
GetPaywall → GetFlow
戻り値の型が AdaptyPaywall から AdaptyFlow に変わり、locale パラメーターが削除されます — フローをレンダリングする際、ロケールは自動的に解決されます。カスタムペイウォールの場合、すべてのロケールは flow.RemoteConfigs に返されます。
- Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
+ Adapty.GetFlow("YOUR_PLACEMENT_ID", (flow, error) => {
if (error != null) {
// handle the error
return;
}
- // use the paywall
+ // use the flow
});
GetPaywallForDefaultAudience も同様にリネームされます:
- Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => { /* ... */ });
+ Adapty.GetFlowForDefaultAudience("YOUR_PLACEMENT_ID", (flow, error) => { /* ... */ });
GetPaywallProducts(paywall) → GetPaywallProducts(flow)
GetPaywallProducts は名前を維持したまま、AdaptyFlow を受け取るように変わります:
- Adapty.GetPaywallProducts(paywall, (products, error) => {
+ Adapty.GetPaywallProducts(flow, (products, error) => {
if (error != null) {
// handle the error
return;
}
// use the products
});
データモデル
GetFlow は AdaptyPaywall の代わりに AdaptyFlow を返し、オブジェクトの構造が変わりました:
v3 AdaptyPaywall プロパティ | v4 AdaptyFlow プロパティ | アクション |
|---|---|---|
RemoteConfig(単一、nullable) | RemoteConfigs(リスト) | フローは設定された言語ごとに1つのリモートコンフィグを持ちます。flow.RemoteConfigs からユーザーに一致するものを読み取ってください。flow.RemoteConfig ショートカットは最初のエントリを返します。 |
| (新規) | Paywalls(AdaptyFlowPaywall のリスト) | 各エントリはフロー内の1つのペイウォールバリエーションで、独自の Name、VariationId、ProductIdentifiers を持ちます。Web ペイウォールのメソッドは AdaptyFlowPaywall を受け取ります。詳しくは Web ペイウォールメソッド を参照してください。 |
ProductIdentifiers、VendorProductIds | 維持 | AdaptyFlow では、これらはすべてのペイウォールバリエーションをまたいでプロダクトを集約します。各バリエーションも独自の ProductIdentifiers と VendorProductIds を持ちます。プロダクトを取得するには、引き続き GetPaywallProducts(flow) を呼び出してください。 |
HasViewConfiguration | 削除 | コードから HasViewConfiguration のチェックをすべて削除してください。代わりに CreateFlowView がエラーを返します(フローの表示 を参照)。 |
Products(AdaptyProductReference のリスト) | 削除 | AdaptyProductReference は非公開になり、それとともに PromotionalOfferId、WinBackOfferId、AndroidOfferId の値も使えなくなりました。ProductIdentifiers(VendorProductId と Android 専用の BasePlanId(v3 の AndroidBasePlanId)を持つ AdaptyProductIdentifier のリスト)を使用するか、価格やオファーを含む完全な AdaptyPaywallProduct オブジェクトが必要な場合は GetPaywallProducts(flow) を呼び出してください。 |
RemoteConfigString | 削除 | リモートコンフィグ自体から文字列を読み取ってください: flow.RemoteConfig?.Data、または flow.RemoteConfigs の該当エントリから取得します。 |
| (新規) | FlowVersionId(nullable) | フローのバージョン識別子。利用できない場合は null。 |
AdaptyPaywallProduct に新しいフィールドが追加されました: FlowProductId は、フロー内でのプロダクトの識別子で、フローに属さないプロダクトの場合は null になります。
Webペイウォールのメソッド
OpenWebPaywall と CreateWebPaywallUrl はメソッド名はそのままですが、paywall 引数に AdaptyFlowPaywall を渡すようになりました。これは flow.Paywalls 内のいずれかのバリアントです。引き続き AdaptyPaywallProduct を渡すこともできます:
- Adapty.OpenWebPaywall(paywall, AdaptyWebPresentation.ExternalBrowser, (error) => { /* ... */ });
+ var flowPaywall = flow.Paywalls.FirstOrDefault();
+ if (flowPaywall != null) {
+ Adapty.OpenWebPaywall(flowPaywall, AdaptyWebPresentation.ExternalBrowser, (error) => { /* ... */ });
+ }
フローのビュー数を計測する
LogShowPaywall → LogShowFlow
LogShowPaywall は LogShowFlow に名前が変わり、AdaptyFlow を受け取るようになりました。イベントは引き続き同じバリエーションに対して記録されるため、既存のファネルや A/B テストの指標はダッシュボードの変更なしに動作し続けます。
- Adapty.LogShowPaywall(paywall, (error) => { /* ... */ });
+ Adapty.LogShowFlow(flow, (error) => { /* ... */ });
v3 と同様に、Flow Builder または Paywall Builder でレンダリングされたフローやペイウォールを表示する場合、このメソッドを呼び出す必要はありません。Adapty がそれらのビューを自動的に追跡します。
フローの表示
CreatePaywallView → CreateFlowView
ファクトリーメソッドの名前を変更し、AdaptyFlow を渡します。返されるビューの型は AdaptyUIPaywallView から AdaptyUIFlowView に変更されていますが、そのメソッド(Present、Dismiss)は変更されておらず、省略可能なパラメーターオブジェクトは AdaptyUICreateFlowViewParameters という新しい名前になり、同じフィールド(LoadTimeout、PreloadProducts、CustomTags、CustomTimers、CustomAssets、ProductPurchaseParameters)に加え、Locale と EnableSafeAreaPaddings の2つの新しいフィールドが追加されています:
- AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
+ AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
if (error != null) {
// handle the error
return;
}
view.Present((error) => { /* handle the error */ });
});
CreateFlowView は、フローにビュー設定がない場合にエラーを返します。これは v3 の HasViewConfiguration チェックを置き換えるものです:
- if (paywall.HasViewConfiguration) {
- AdaptyUI.CreatePaywallView(paywall, null, (view, error) => { /* ... */ });
- }
+ AdaptyUI.CreateFlowView(flow, (view, error) => {
+ if (error != null) {
+ // the flow has no view configured, or view creation failed
+ return;
+ }
+ view.Present((error) => { /* handle the error */ });
+ });
フローのビューは使い捨てです。Dismiss を呼び出すとビューが破棄されるため、再度フローを表示するには CreateFlowView をもう一度呼び出してください。
Android セーフエリアパディング
AdaptyUICreateFlowViewParameters には EnableSafeAreaPaddings が追加されており、実行時に Android のセーフエリアパディングを制御します。iOS では無視され、デフォルト値は true です。
var parameters = new AdaptyUICreateFlowViewParameters()
.SetEnableSafeAreaPaddings(false);
イベントの処理
リスナーインターフェースは C# の I プレフィックス規則に準拠するようになりました。レガシーのエイリアスは保持されていないため、実装箇所で AdaptyEventListener を IAdaptyEventListener に、AdaptyOnboardingsEventsListener を IAdaptyOnboardingsEventsListener にそれぞれ名前変更してください。
フローイベントリスナーの名前が AdaptyPaywallsEventsListener から IAdaptyFlowsEventsListener に変更され、登録メソッドが SetPaywallsEventsListener から SetFlowsEventsListener に変更されました。また、コールバックの PaywallView プレフィックスが FlowView に変更されています。既存のハンドラー本体のコードを変更する必要はありません。インターフェースとメソッドの名前を変更するだけです。
- public class MyListener : MonoBehaviour, AdaptyPaywallsEventsListener {
- public void PaywallViewDidFinishPurchase(
- AdaptyUIPaywallView view,
+ public class MyListener : MonoBehaviour, IAdaptyFlowsEventsListener {
+ public void FlowViewDidFinishPurchase(
+ AdaptyUIFlowView view,
AdaptyPaywallProduct product,
AdaptyPurchaseResult purchasedResult
) {
// custom logic after purchase
}
// ...
}
- Adapty.SetPaywallsEventsListener(myListener);
+ Adapty.SetFlowsEventsListener(myListener);
1つのコールバックが名前変更されました:PaywallViewDidFailRendering が FlowViewDidReceiveError になります。以前と同様のレンダリングエラーに加え、購入以外のその他のランタイムエラーでも発火します:
- public void PaywallViewDidFailRendering(AdaptyUIPaywallView view, AdaptyError error) { }
+ public void FlowViewDidReceiveError(AdaptyUIFlowView view, AdaptyError error) { }
コールバックの完全なリストについては、フロー&ペイウォールイベントの処理を参照してください。
新しい API
Adapty.SetObserverModeResolver(...)にIAdaptyUIObserverModeResolverを指定すると、SDK が Observer モードで動作している際にフローから開始された購入やリストアを処理できます。以前はネイティブの iOS および Android SDK でのみ利用可能でした。詳細は Observer モードでフローを表示する をご覧ください。Adapty.SetSystemRequestsHandler(...)にIAdaptyUISystemRequestsHandlerを指定すると、フローからのシステムリクエスト(OS のパーミッションプロンプト(FlowViewDidAskPermission)やアプリレビューリクエスト(FlowViewDidRequestAppReview))を処理できます。フローはまだこれらのリクエストをトリガーしないため、ハンドラーを登録する必要はありません。AdaptyUICreateFlowViewParameters.Locale(SetLocaleで設定)— デバイスから解決されるロケールではなく、特定の Builder ローカライゼーション でフローまたはペイウォールをレンダリングします。フローのローカライゼーションはビューの作成時に適用されるため、ここがローカライゼーションを指定できる唯一のタイミングです。作成されたビューはview.Localeに、ビルド時に使用されたローカライゼーションを報告します。詳細は ローカライゼーションとロケールコードの使用 をご覧ください。IAdaptyFlowsEventsListenerの新しいコールバックFlowViewDidReceiveAnalyticEventは、フローからのカスタム分析イベント用に予約されています。フローはまだこれらをコードに送出しないため、空のボディで実装してください。AdaptyUI.OpenUrl(url, openIn, ...)およびAdaptyUI.RequestAppReview(...)—open_urlアクションとアプリレビューリクエストのネイティブ処理です。FlowViewDidPerformActionからOpenUrlを呼び出すことでデフォルトの URL 動作を維持できます。RequestAppReviewはデフォルトのアプリレビュープロンプトを支援しますが、フローはまだこれをトリガーしません。
デフォルト動作の変更
これらの変更はコンパイルエラーを引き起こしませんが、実行時にテストしてください。
- 購入完了時の動作: v3 では購入成功後にビューが自動的に閉じられていました。v4 では、購入またはエラーの後もフローは開いたまま維持され、明示的に閉じるまで SDK は何も行いません。ユーザーがアクセスを取得したら、
FlowViewDidFinishPurchase内で自らview.Dismiss(...)を呼び出してください。 - Android のシステムバック: システムの戻るボタン(または戻るジェスチャー)は、
SystemBackアクションとしてFlowViewDidPerformActionに渡されるようになり、フローを自動的に閉じなくなりました。これは、システムジェスチャーでフローを閉じられない iOS の動作に合わせたものです。ユーザーが明示的に離脱できるよう(Close ボタンやon_device_backアクションなど)、またはアクション処理時に自分でビューを閉じてください。 - ビューは使い捨て:
Dismissを呼び出すとビューは破棄されます。フローを再度表示するにはCreateFlowViewを再度呼び出してください。 - オブザーバーモードのトランザクション:
ReportTransactionは成功時にデコードエラーを返さなくなりました。v3 では成功レスポンスのパースに誤りがあり、成功した報告が常にエラーで完了していました。
オンボーディング API の廃止
レガシーオンボーディング API は v4.0 で非推奨となり、フロービルダーに置き換えられました。引き続き動作しますが、将来のリリースで削除される予定です。オンボーディングをフロービルダーに移行する計画を立ててください。
非推奨のシンボル: GetOnboarding、GetOnboardingForDefaultAudience、AdaptyUI.CreateOnboardingView、AdaptyUI.PresentOnboardingView、AdaptyUI.DismissOnboardingView、Adapty.SetOnboardingsEventsListener