Superwallからの移行
SuperwallからAdaptyへの移行は、ほとんどの場合2時間程度で完了します。SDKを入れ替え、ストアのサーバー通知をAdaptyに向け直し、新しいアプリリリースを公開するだけです。有料サブスクライバーはアクセスを維持できます — Adaptyは初回起動時にApp StoreとGoogle Playのレシートからアクセスを復元します。
サブスクライバーは自動的に移行されます
サブスクリプションを有効化したことがあるすべてのユーザーは、Adapty SDKを搭載した新バージョンのアプリを開いた時点でAdaptyに移行されます。サブスクリプション状態の検証とプレミアムアクセスは自動的に復元されます。
このガイドの構成
移行は6つのステップで進みます:
- SuperwallのコンセプトをAdaptyにマッピングする
- Adapty SDKをインストールする
- SDKの呼び出しを置き換える
- App StoreとGoogle Playのサーバー通知を切り替える
- テストとリリース
- (オプション) 過去のデータをインポートする
SuperwallのコンセプトをAdaptyにマッピングする
Superwallのコンセプトのほとんどは、Adaptyに直接対応するものがあります:
| Superwall | Adapty | 変更点 |
|---|---|---|
| Campaign | プレースメント + オーディエンス | キャンペーンのロジックは、プレースメント(場所)とオーディエンス(ルール)に分かれます。 |
| Placement | プレースメント | 同じコンセプト、同じ名前。 |
| Audience filter | オーディエンス | ルールセットはプレースメント内に存在します。 |
| Entitlement | アクセスレベル | 名前付き識別子(例:premium)。 |
| WebView paywall | ペイウォールビルダーのペイウォール | WKWebViewではなく、Adapty SDKがネイティブにレンダリングします。 |
PurchaseController | 組み込み | 実装すべきプロトコルなし — Adaptyが購入処理を担当します。 |
| Feature gating | アクセスレベルチェック | profile.accessLevels["premium"]?.isActiveを確認します。 |
コードに触れる前に、2つの考え方の転換を理解しておきましょう:
- フェッチと表示は別ステップです: Superwallの
registerは、ペイウォールのフェッチ、キャンペーンの評価、UIの表示を1回の呼び出しで行います。Adaptyはこれらのステップを分けています — ペイウォールをフェッチし、その設定を取得してから表示します。手順は増えますが、設定のプリロード、カスタムローディング状態の表示、独自ロジックに基づいた表示のキャンセルが可能になります。 - サブスクリプション状態はアクセスレベルごとです: Superwallは単一の
subscriptionStatusパブリッシュプロパティを公開します。Adaptyは名前付きアクセスレベルを持つAdaptyProfileを返すため、1人のユーザーがsportsとscienceのアクセスレベルを独立して持つことができます。同期的な読み取りには、ビューの読み込みごとにgetProfile()を呼び出すのではなく、AdaptyDelegateからプロファイルをキャッシュしてください。
Adapty SDKをインストールする
お使いのプラットフォーム向けのAdapty SDKをインストールしてください — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity、またはCapacitor — そして同時にSuperwalKitをプロジェクトから削除してください。
SDKの呼び出しを置き換える
インテグレーションの各部分を確認しながら、SupwallのコールをAdaptyの対応するものに置き換えてください。各サブセクションの末尾にあるリンクは7つのプラットフォームSDKすべてをカバーしています — アプリに合うものを参照してください。
SDKを初期化する
Superwall.configureをAdapty.activateに置き換えます。
お使いのプラットフォームのインストールガイドを参照してください — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity、またはCapacitor。
ユーザーの識別とログアウト
Superwall.shared.identifyをAdapty.identifyに、Superwall.shared.resetをAdapty.logoutに置き換えます。両SDKとも初回起動時に匿名プロファイルを生成するため、これらの呼び出しはユーザーのサインインまたはサインアウト時のみ必要です。識別後はペイウォールを再フェッチしてください — 新しいユーザーは別のオーディエンスに解決される可能性があります。
お使いのプラットフォームの識別ガイドを参照してください — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity、またはCapacitor。
ペイウォールのフェッチと表示
Superwall.shared.registerを2ステップのフローに置き換えます:Adapty.getPaywallでペイウォールをフェッチし、AdaptyUI.getPaywallConfigurationでビュー設定を読み込み、それから表示します。
2つの違いに注目してください:
feature:クロージャに代わるフィーチャーゲーティング: ペイウォールが閉じた後、返されたプロファイル(またはAdapty.getProfile)のアクティブなアクセスレベルを確認し、そこから分岐します。- ペイウォールはSDKによってレンダリングされます: Superwallは
WKWebView内でペイウォールをレンダリングします。Adaptyはペイウォールビルダーのペイウォールをネイティブにレンダリングします — フォント、プロダクト情報、ボタンはSDKによって描画されます。
お使いのプラットフォームのペイウォールクイックスタートを参照してください — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity、またはCapacitor。
サブスクリプション状態を確認する
Superwall.shared.subscriptionStatusを、プロファイルの名前付きアクセスレベルのチェックに置き換えます:profile.accessLevels["premium"]?.isActive。変更の監視は@Publishedプロパティパターンの代わりにAdaptyDelegate.didLoadLatestProfile(_:)を使用し、同期的な読み取りのためにプロファイルをキャッシュしてください。
お使いのプラットフォームのサブスクリプション状態確認ガイドを参照してください — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity、またはCapacitor。
購入と復元を処理する
ペイウォールビルダーを使用する場合、両SDKともペイウォールUI内で購入を自動的に処理します — このステップはスキップできます。
カスタムペイウォールの場合、SuperwallはPurchaseControllerの実装を必要とします。Adaptyは不要です:PurchaseController.purchaseをAdapty.makePurchaseに、PurchaseController.restorePurchasesをAdapty.restorePurchasesに置き換えてください。SDKが自動的に検証を処理します。
お使いのプラットフォームのカスタムペイウォールクイックスタートを参照してください — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity、またはCapacitor。
ユーザー属性を設定する
Superwall.shared.setUserAttributesをAdapty.updateProfileに置き換えます。
お使いのプラットフォームのユーザー属性ガイドを参照してください — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity、またはCapacitor。
App StoreとGoogle Playのサーバー通知を切り替える
ストアのサーバー通知をAdaptyに向け直してください。Adaptyはそれなしでも動作しますが、アナリティクス、サードパーティインテグレーション、A/Bテストの指標はこれに依存しています:
- App Store: App Storeサーバー通知を有効にするの手順に従ってください。
- Google Play: リアルタイム開発者通知を有効にするの手順に従ってください。
ロールアウト中にSuperwallとAdaptyを並行して動かしたい場合は、rawイベントフォワーディングを使用してください — AdaptyがストアイベントをそのままのかたちでSuperwallに転送する一方で、新しいインテグレーションを検証できます。
テストとリリース
リリース前に、各項目を確認してください:
- Adapty ダッシュボードを設定済み(プロダクト、ペイウォール、プレースメント、アクセスレベル)
- Adapty SDKをインストール済み
- Superwall SDKの呼び出しをAdaptyの対応するものに置き換え済み
- App StoreとGoogle PlayのサーバーNotificationsをAdaptyに向け直し済み
- サンドボックス購入を実施済み
- 新しいアプリリリースを提出済み
最終検証としてリリースチェックリストを確認してください。
(オプション) 過去のデータをインポートする
Superwallはサブスクリプション状態を所有していません — それはApp StoreとGoogle Playが所有しています。Adaptyは初回起動時にレシートを検証するため、有料ユーザーはインポートなしでアクセスを維持できます。
過去のトランザクションをAdaptyアナリティクスにバックフィルしたい場合は、Adaptyへの過去データのインポートの手順に従ってください。SDKが新しい購入価格を収集する時間を確保するため、SDKリリース後少なくとも1週間待ってください。
よくある質問
アプリを更新しないサブスクライバーはどうなりますか?
ほとんどのユーザーは夜間に自動更新するため、旧バージョンを使用しているユーザーの割合は急速に減少します。旧バージョンのサブスクライバーは、App StoreまたはGoogle Playを通じて直接アクセスを維持します — 強制更新は必要ありません。
Superwallのキャンペーンオーディエンスは引き継がれますか?
いいえ。SuperwallのオーディエンスフィルターとAdaptyのオーディエンスは異なるダッシュボードで設定され、異なる識別子を使用します。ターゲティングをAdaptyのプレースメント内のオーディエンスとして再作成してください。ほとんどのアプリは1〜2つのプレースメント(オンボーディングと一般的なアプリ内トリガー)を使用しているため、再構築は通常短時間で完了します。
getPresentationResultに相当するものはAdaptyにありますか?
単一の呼び出しとしては存在しません。プレースメントがペイウォールを表示するかどうかを確認するには、Adapty.getPaywall(placementId:)を呼び出し、結果に基づいて分岐します。呼び出しが成功すれば、そのユーザーのオーディエンスにペイウォールが割り当てられています。ペイウォールが設定されていないために失敗した場合は、表示をスキップしてフォールバックロジックを実行してください。