在 Flutter SDK 中为自定义付费墙启用购买功能

本指南介绍如何将 Adapty 集成到您的自定义付费墙中。您可以完全掌控付费墙的实现方式,同时由 Adapty SDK 负责获取产品、处理新购买以及恢复历史购买。

本指南面向正在实现自定义付费墙的开发者。 如果您希望以最简单的方式启用购买功能,请使用 Adapty 付费墙编辑工具。借助付费墙编辑工具,您可以在无代码可视化编辑器中创建付费墙,Adapty 会自动处理所有购买逻辑,并且无需重新发布应用即可测试不同的设计方案。

开始之前

设置产品

要启用应用内购买,您需要了解三个关键概念:

  • 产品 – 用户可以购买的任何内容(订阅、消耗型商品、永久授权)
  • 付费墙 – 定义提供哪些产品的配置。在 Adapty 中,付费墙是检索产品的唯一方式,但这种设计让您无需修改应用代码即可调整产品、价格和优惠。
  • 版位 – 在应用中展示付费墙的位置和时机(例如 mainonboardingsettings)。您在看板中为版位设置付费墙,然后在代码中通过版位 ID 请求它们。这使得运行 A/B 测试和向不同用户展示不同付费墙变得非常便捷。

即使您使用自定义付费墙,也请确保理解这些概念。简而言之,这些概念只是您管理应用内销售产品的方式。

要实现自定义付费墙,您需要创建一个付费墙并将其添加到版位中。此设置允许您检索产品。如需了解在看板中需要执行哪些操作,请参阅此处的快速入门指南。

管理用户

您可以选择是否使用后端身份验证。

但是,Adapty SDK 对匿名用户和已识别用户的处理方式有所不同。请阅读身份识别快速入门指南以了解具体细节,并确保您正确处理用户信息。

第一步:获取产品

要为自定义付费墙检索产品,您需要:

  1. 通过将版位 ID 传递给 getPaywall 方法来获取 paywall 对象。
  2. 使用 getPaywallProducts 方法获取该付费墙的产品数组。
import 'package:adapty_flutter/adapty_flutter.dart';

Future<void> loadPaywall() async {
  try {
    final paywall = await Adapty().getPaywall(placementId: 'YOUR_PLACEMENT_ID');
    final products = await Adapty().getPaywallProducts(paywall: paywall);
    
    // Use products to build your custom paywall UI
  } on AdaptyError catch (adaptyError) {
    // Handle the error
  } catch (e) {
    // Handle the error
  }
}

第二步:接受购买

当用户点击自定义付费墙中的产品时,使用所选产品调用 makePurchase 方法。该方法将处理购买流程并返回更新后的用户画像。

import 'package:adapty_flutter/adapty_flutter.dart';

Future<void> purchaseProduct(AdaptyPaywallProduct product) async {
  try {
    final purchaseResult = await Adapty().makePurchase(product: product);
    
    switch (purchaseResult) {
      case AdaptyPurchaseResultSuccess(profile: final profile):
        // Purchase successful, profile updated
        break;
      case AdaptyPurchaseResultUserCancelled():
        // User canceled the purchase
        break;
      case AdaptyPurchaseResultPending():
        // Purchase is pending (e.g., user will pay offline with cash)
        break;
    }
  } on AdaptyError catch (adaptyError) {
    // Handle the error
  } catch (e) {
    // Handle the error
  }
}

第三步:恢复购买

应用商店要求所有含订阅功能的应用提供用户恢复购买的方式。

当用户点击恢复按钮时,调用 restorePurchases 方法。该方法将把用户的购买历史与 Adapty 同步,并返回更新后的用户画像。

import 'package:adapty_flutter/adapty_flutter.dart';

Future<void> restorePurchases() async {
  try {
    final profile = await Adapty().restorePurchases();
    // Restore successful, profile updated
  } on AdaptyError catch (adaptyError) {
    // Handle the error
  } catch (e) {
    // Handle the error
  }
}

后续步骤

有疑问或遇到问题?请访问我们的支持论坛,您可以在那里找到常见问题的解答,或者提出您自己的问题。我们的团队和社区随时为您提供帮助!

您的付费墙已准备好在应用中展示。请在 App Store 沙盒Google Play Store 中测试购买功能,以确保您可以从付费墙完成测试购买。如需查看生产环境中的实现示例,请参阅我们示例应用中的 PurchasesObserver,其中展示了包含完善错误处理、UI 观察者以及全面 SDK 集成的购买处理方式。

接下来,检查用户是否已完成购买,以决定是显示付费墙还是授予付费功能的访问权限。