从 Superwall 迁移

从 Superwall 迁移到 Adapty 通常只需约两小时。你只需替换 SDK、将应用商店服务器通知指向 Adapty,然后发布新版本即可。付费订阅用户的权益会自动保留——Adapty 在用户首次启动时即可从 App Store 和 Google Play 收据中恢复。

Info

你的订阅用户将自动完成迁移 所有曾经激活过订阅的用户,只要打开集成了 Adapty SDK 的新版应用,就会自动迁移到 Adapty。订阅状态验证和高级访问权限会自动恢复。

本指南的结构

迁移共分六个步骤:

  1. 将 Superwall 概念映射到 Adapty (5 分钟)
  2. 安装 Adapty SDK (15 分钟)
  3. 替换 SDK 调用 (1 小时)
  4. 切换 App Store 和 Google Play 服务器通知 (5 分钟)
  5. 测试与发布 (30 分钟)
  6. (可选)导入历史数据

将 Superwall 概念映射到 Adapty

大多数 Superwall 概念在 Adapty 中都有对应的概念:

SuperwallAdapty变更说明
Campaign版位 + 目标受众Campaign 逻辑拆分为版位(位置)和目标受众(规则)。
Placement版位概念相同,名称相同。
Audience filter目标受众规则集位于版位内部。
Entitlement访问等级命名标识符(例如 premium)。
WebView paywall付费墙编辑工具付费墙由 Adapty SDK 原生渲染,而非使用 WKWebView。
PurchaseController内置无需实现协议 —— Adapty 自动处理购买流程。
Feature gating访问等级检查检查 profile.accessLevels["premium"]?.isActive。
在接触代码之前,有两个思维转变值得注意:
  • 获取与展示是两个独立步骤:Superwall 的 register 方法在一次调用中完成付费墙获取、营销活动评估和 UI 展示。Adapty 将这些步骤拆分开来——你需要先获取付费墙,拿到其配置,再进行展示。虽然多了几行代码,但这让你可以预加载配置、显示自定义加载状态,或根据自己的逻辑取消展示。
  • 订阅状态按访问等级区分:Superwall 暴露单一的 subscriptionStatus 发布属性。Adapty 返回一个包含命名访问等级的 AdaptyProfile,因此同一用户可以同时持有 sports 和 science 两个独立的访问等级。如需同步读取,建议从 AdaptyDelegate 缓存用户画像,而不是每次视图加载时都调用 getProfile()。

安装 Adapty SDK

为你的平台安装 Adapty SDK —— iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity 或 Capacitor —— 同时从项目中移除 SuperwallKit。

替换 SDK 调用

逐一检查集成的各个部分,将 Superwall 调用替换为对应的 Adapty 调用。每个小节末尾都附有链接,涵盖全部七个平台的 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 替换为两步流程:先用 Adapty.getPaywall 获取付费墙,再用 AdaptyUI.getPaywallConfiguration 加载其视图配置,最后进行展示。

需要注意两点区别:

  • 功能门控取代了 feature: 闭包:付费墙关闭后,检查返回的用户画像(或通过 Adapty.getProfile 获取)上的有效访问等级,再据此进行分支处理。
  • 付费墙由 SDK 渲染:Superwall 在 WKWebView 中渲染付费墙。Adapty 则通过付费墙编辑工具以原生方式渲染付费墙——字体、产品信息和按钮均由 SDK 直接绘制。 请参阅适用于您平台的付费墙快速入门 — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity 或 Capacitor。

检查订阅状态

将 Superwall.shared.subscriptionStatus 替换为对用户画像中指定访问等级的检查:profile.accessLevels["premium"]?.isActive。通过 AdaptyDelegate.didLoadLatestProfile(_:) 监听变更,而非使用 @Published 属性模式,并在本地缓存用户画像以便同步读取。 请参阅适用于您平台的订阅状态指南 — iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity 或 Capacitor。

处理购买与恢复

使用付费墙编辑工具时,两个 SDK 都会在付费墙界面内自动处理购买流程——此步骤可跳过。

对于自定义付费墙,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 测试数据图表都需要它们:

测试与发布

发布前,请逐一确认以下各项:

  • 已配置 Adapty 看板(产品、付费墙、版位、访问等级)
  • 已安装 Adapty SDK
  • 已将 Superwall SDK 调用替换为 Adapty 等效调用
  • 已将 App Store 和 Google Play 服务器通知指向 Adapty
  • 已完成沙盒购买
  • 已提交新版本应用

请参阅发布检查清单进行最终验证。

(可选)导入历史数据

Superwall 并不拥有您的订阅状态——App Store 和 Google Play 才是。Adapty 在首次启动时会验证收据,因此付费用户无需任何导入即可保留其访问权限。

如果您希望将历史交易数据回填到 Adapty 分析中,请参考向 Adapty 导入历史数据。建议在 SDK 发布后至少等待一周,以便 SDK 有足够时间收集最新的购买价格。

常见问题

不更新应用的订阅者会怎样?

大多数用户会在夜间自动更新应用,因此使用旧版本的用户比例会迅速下降。留在旧版本的订阅者可以直接通过 App Store 或 Google Play 继续使用其权益,无需强制更新。

我的 Superwall 活动目标受众会自动迁移吗?

不会。Superwall 的受众过滤器和 Adapty 的目标受众分别在不同的看板中配置,且使用不同的标识符。请在 Adapty 的版位中重新创建你的定向规则,作为目标受众进行设置。大多数应用只有一两个版位(用户引导和通用应用内触发),因此重建工作通常很快就能完成。

Adapty 是否有与 getPresentationResult 等效的方法?

没有单独的调用方法。如需判断某个版位是否会显示付费墙,请调用 Adapty.getPaywall(placementId:) 并根据结果进行分支处理。若调用成功,说明该用户的目标受众已分配付费墙;若调用失败(原因是未配置付费墙),则跳过展示并执行备用逻辑。