从 Superwall 迁移
从 Superwall 迁移到 Adapty 通常只需约两小时。你只需替换 SDK、将应用商店服务器通知指向 Adapty,然后发布新版本即可。付费订阅用户的权益会自动保留——Adapty 在用户首次启动时即可从 App Store 和 Google Play 收据中恢复。
你的订阅用户将自动完成迁移 所有曾经激活过订阅的用户,只要打开集成了 Adapty SDK 的新版应用,就会自动迁移到 Adapty。订阅状态验证和高级访问权限会自动恢复。
本指南的结构
迁移共分六个步骤:
- 将 Superwall 概念映射到 Adapty (5 分钟)
- 安装 Adapty SDK (15 分钟)
- 替换 SDK 调用 (1 小时)
- 切换 App Store 和 Google Play 服务器通知 (5 分钟)
- 测试与发布 (30 分钟)
- (可选)导入历史数据
将 Superwall 概念映射到 Adapty
大多数 Superwall 概念在 Adapty 中都有对应的概念:
| Superwall | Adapty | 变更说明 |
|---|---|---|
| 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 测试数据图表都需要它们:
- App Store:请参阅启用 App Store 服务器通知。
- Google Play:请参阅启用实时开发者通知。 如果您想在推出过程中并行运行 Superwall 和 Adapty,请使用原始事件转发 —— Adapty 会将商店事件代理回 Superwall,同时您可以验证新的集成。
测试与发布
发布前,请逐一确认以下各项:
- 已配置 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:) 并根据结果进行分支处理。若调用成功,说明该用户的目标受众已分配付费墙;若调用失败(原因是未配置付费墙),则跳过展示并执行备用逻辑。