在 Kotlin Multiplatform SDK 中通过付费墙启用购买
要启用应用内购买,你需要了解三个核心概念:
- 产品 – 用户可以购买的任何内容(订阅、消耗型商品、永久授权)
- 付费墙 是定义向用户展示哪些产品的配置。在 Adapty 中,付费墙是检索产品的唯一方式,但这种设计让你无需修改应用代码就能调整商品组合、定价和产品搭配。
- 版位 – 在应用中展示付费墙的位置和时机(如
main、onboarding、settings)。你在看板中为版位配置付费墙,然后在代码中通过版位 ID 请求对应的付费墙。这使 A/B 测试和向不同用户展示不同付费墙变得非常简单。
Adapty 为你提供三种在应用中启用购买的方式,请根据应用需求选择其中一种:
| 实现方式 | 复杂度 | 适用场景 |
|---|---|---|
| Adapty 付费墙编辑工具 | ✅ 简单 | 你在无代码编辑工具中创建一个完整、可直接购买的付费墙。Adapty 自动渲染付费墙并在后台处理所有复杂的购买流程、收据验证和订阅管理。 |
| 手动创建的付费墙 | 🟡 中等 | 你在应用代码中实现付费墙 UI,但仍从 Adapty 获取付费墙对象以保持产品组合的灵活性。请参阅指南。 |
| Observer 模式 | 🔴 复杂 | 你已有自己的购买处理基础设施并希望继续使用。请注意,Observer 模式在 Adapty 中存在一些限制。请参阅文章。 |
以下步骤展示如何实现在 Adapty 付费墙编辑工具中创建的付费墙。
如果你不想使用付费墙编辑工具,请参阅手动创建付费墙的购买处理指南。
要在应用代码中展示使用 Adapty 付费墙编辑工具创建的付费墙,你只需要:
- 获取付费墙:从 Adapty 获取付费墙。
- 展示付费墙,Adapty 将为你处理购买:在应用中显示你获取到的付费墙容器。
- 处理按钮操作:将用户与付费墙的交互与应用的响应关联起来。例如,当用户点击按钮时打开链接或关闭付费墙。
开始之前
开始之前,请完成以下步骤:
- 在 Adapty 看板中将你的应用连接到 App Store 和/或 Google Play。
- 在 Adapty 中创建产品。
- 创建付费墙并向其添加产品。
- 创建版位并将付费墙添加到版位。
- 在应用代码中安装并激活 Adapty SDK。
完成这些步骤最快的方式是遵循快速入门指南,或使用 Developer CLI 创建付费墙和版位。
1. 获取付费墙
你的付费墙与在看板中配置的版位相关联。版位允许你为不同的目标受众运行不同的付费墙,或进行 A/B 测试。
要获取在 Adapty 付费墙编辑工具中创建的付费墙,你需要:
-
使用
getPaywall方法通过版位 ID 获取paywall对象,并检查它是否是在编辑工具中创建的付费墙。 -
使用
createPaywallView方法获取付费墙视图配置。视图配置包含显示付费墙所需的 UI 元素和样式。
要获取视图配置,你必须在付费墙编辑工具中开启 Show on device 开关。否则,你将获得一个空的视图配置,付费墙将无法显示。
Adapty.getPaywall("YOUR_PLACEMENT_ID")
.onSuccess { paywall ->
if (!paywall.hasViewConfiguration) {
return@onSuccess
}
val paywallView = AdaptyUI.createPaywallView(paywall = paywall)
paywallView?.present()
}
.onError { error ->
// handle the error
}
2. 展示付费墙
现在,当你已获得付费墙配置后,只需添加几行代码即可展示你的付费墙。
要在设备屏幕上显示可视化付费墙,你必须先对其进行配置。为此,请调用 AdaptyUI.createPaywallView() 方法:
val paywallView = AdaptyUI.createPaywallView(paywall = paywall)
paywallView?.present()
视图成功创建后,你可以将其呈现在设备屏幕上。
有关如何展示付费墙的更多详情,请参阅我们的指南。
3. 处理按钮操作
当用户点击付费墙中的按钮时,Kotlin Multiplatform SDK 会自动处理购买、恢复购买、关闭付费墙和打开链接等操作。
但是,其他按钮具有自定义或预定义的 ID,需要在你的代码中处理相应操作,或者你可能希望覆盖其默认行为。
例如,以下是关闭按钮的默认行为。你无需在代码中添加它,但在这里你可以了解如何在需要时实现它。
AdaptyUI.setPaywallsEventsObserver(object : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
AdaptyUIAction.CloseAction, AdaptyUIAction.AndroidSystemBackAction -> view.dismiss()
}
}
})
后续步骤
你的付费墙已准备好在应用中展示。在 App Store 沙盒或 Google Play Store 中测试你的购买,确保你可以从付费墙完成测试购买。
接下来,你需要检查用户的访问等级,以确保向正确的用户展示付费墙或开放付费功能的访问权限。
完整示例
以下是如何将所有这些步骤集成到你的应用中的完整示例。
// Set up the observer for handling paywall actions
AdaptyUI.setPaywallsEventsObserver(object : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CloseAction -> view.dismiss()
}
}
})
// Get and display the paywall
Adapty.getPaywall("YOUR_PLACEMENT_ID")
.onSuccess { paywall ->
if (!paywall.hasViewConfiguration) {
// Use custom logic
return@onSuccess
}
val paywallView = AdaptyUI.createPaywallView(paywall = paywall)
paywallView?.present()
}
.onError { error ->
// handle the error
}