本指南介绍如何将 Adapty 集成到您的自定义付费墙中。您可以完全掌控付费墙的实现,同时由 Adapty SDK 负责获取产品、处理新购买以及恢复历史购买记录。
本指南面向正在实现自定义付费墙的开发者。 如果您希望以最简便的方式启用购买功能,请使用 Adapty 付费墙编辑工具。通过付费墙编辑工具,您可以在无需编写代码的可视化编辑器中创建付费墙,Adapty 将自动处理所有购买逻辑,无需重新发布应用即可测试不同的设计方案。
开始之前
配置产品
要启用应用内购买,您需要了解以下三个核心概念:
- 产品 – 用户可购买的任何内容(订阅、消耗型商品、永久授权)
- 付费墙 – 定义向用户展示哪些产品的配置。在 Adapty 中,付费墙是获取产品的唯一途径,但这种设计允许您在不修改应用代码的情况下调整产品、价格和优惠。
- 版位 – 付费墙在应用中显示的位置和时机(例如
main、onboarding、settings)。您在控制台中为版位配置付费墙,然后在代码中通过版位 ID 请求对应的付费墙。这使得运行 A/B 测试并向不同用户展示不同付费墙变得非常便捷。
即使您使用自定义付费墙,也需要理解这些概念。它们本质上是您管理应用内销售产品的方式。
要实现自定义付费墙,您需要创建一个付费墙并将其添加到版位中。此配置允许您获取产品信息。要了解在控制台中需要执行哪些操作,请参阅此处的快速入门指南。
管理用户
您可以选择在有或没有后端身份验证的情况下使用 Adapty。
Adapty SDK 对匿名用户和已识别用户的处理方式有所不同。请阅读身份识别快速入门指南,以了解其中的细节,并确保您能正确处理用户信息。
第一步:获取产品
要为自定义付费墙获取产品,您需要:
- 通过向
getPaywall 方法传入版位 ID 来获取 paywall 对象。
- 使用
getPaywallProducts 方法获取该付费墙的产品数组。
import Adapty
func loadPaywall() async {
do {
let paywall = try await Adapty.getPaywall("YOUR_PLACEMENT_ID")
let products = try await Adapty.getPaywallProducts(paywall: paywall)
// Use products to build your custom paywall UI
} catch {
// Handle the error
}
}
import Adapty
func loadPaywall() {
Adapty.getPaywall("YOUR_PLACEMENT_ID") { result in
switch result {
case let .success(paywall):
Adapty.getPaywallProducts(paywall: paywall) { result in
switch result {
case let .success(products):
// Use products to build your custom paywall UI
case let .failure(error):
// Handle the error
}
}
case let .failure(error):
// Handle the error
}
}
}
第二步:接受购买
当用户在自定义付费墙中点击某个产品时,请调用 makePurchase 方法并传入所选产品。这将处理购买流程并返回更新后的用户画像。
import Adapty
func purchaseProduct(_ product: AdaptyPaywallProduct) async {
do {
let purchaseResult = try await Adapty.makePurchase(product: product)
switch purchaseResult {
case .userCancelled:
// User canceled the purchase
break
case .pending:
// Purchase is pending (e.g., awaiting parental approval)
break
case let .success(profile, transaction):
// Purchase successful, profile updated
break
}
} catch {
// Handle the error
}
}
import Adapty
func purchaseProduct(_ product: AdaptyPaywallProduct) {
Adapty.makePurchase(product: product) { result in
switch result {
case let .success(purchaseResult):
switch purchaseResult {
case .userCancelled:
// User canceled the purchase
break
case .pending:
// Purchase is pending (e.g., awaiting parental approval)
break
case let .success(profile, transaction):
// Purchase successful, profile updated
break
}
case let .failure(error):
// Handle the error
}
}
}
第三步:恢复购买
Apple 要求所有含订阅功能的应用为用户提供恢复购买的途径。尽管当用户使用其 Apple ID 登录时购买记录会自动恢复,您仍必须在应用中实现一个恢复购买按钮。
当用户点击恢复按钮时,调用 restorePurchases 方法。这将把用户的购买历史与 Adapty 同步,并返回更新后的用户画像。
import Adapty
func restorePurchases() async {
do {
let profile = try await Adapty.restorePurchases()
// Restore successful, profile updated
} catch {
// Handle the error
}
}
import Adapty
func restorePurchases() {
Adapty.restorePurchases { result in
switch result {
case let .success(profile):
// Restore successful, profile updated
case let .failure(error):
// Handle the error
}
}
}
后续步骤
有疑问或遇到问题?请访问我们的支持论坛,您可以在那里找到常见问题的解答,或者提出您自己的问题。我们的团队和社区随时为您提供帮助!
您的付费墙已准备好在应用中展示。在沙盒模式下测试您的购买,确保您可以从付费墙完成测试购买。
接下来,检查用户是否已完成购买,以确定是否应展示付费墙或授予付费功能的访问权限。