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

本指南介绍如何将 Adapty 集成到您的自定义付费墙中。您可以完全掌控付费墙的实现方式,同时由 Adapty SDK 负责获取产品、处理新购买以及恢复历史购买记录。本指南使用 Adapty Unity SDK v4(beta)的 API——如果您使用的是 v3,请参阅迁移指南了解对应的方法名称。

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

开始之前

设置产品

要启用应用内购买,你需要了解三个核心概念:

  • 产品 – 用户可购买的一切内容(订阅、消耗型商品、永久授权)
  • 付费墙 – 定义向用户展示哪些产品的配置。在 Adapty 中,付费墙是获取产品的唯一方式,但这种设计让你无需改动应用代码即可修改产品、价格和优惠。在 SDK v4 中,版位的付费墙变体由 flow 对象承载——你获取一个 flow 并查询其中的产品。
  • 版位 – 应用中展示付费墙的位置和时机(如 mainonboardingsettings)。你在看板中为版位配置付费墙,然后在代码中通过版位 ID 请求它们。这样可以轻松进行 A/B 测试,并向不同用户展示不同的付费墙。

在使用自定义付费墙时,请务必理解这些概念——它们本质上是你管理应用内销售产品的方式。

要实现自定义付费墙,你需要创建一个付费墙并将其添加到版位中。这样就可以获取你的产品。如需了解在看板中的具体操作步骤,请参考此处的快速入门指南。

管理用户

您可以选择使用或不使用后端身份验证。

但请注意,Adapty SDK 对匿名用户和已识别用户的处理方式有所不同。请阅读用户识别快速入门指南,了解具体差异并确保您正确地管理用户。

第一步:获取产品

要为自定义付费墙获取产品,您需要:

  1. 通过将版位 ID 传递给 GetFlow 方法来获取 flow 对象。
  2. 使用 GetPaywallProducts 方法获取该流程的产品数组。
using AdaptySDK;

void LoadPaywall() {
    Adapty.GetFlow("YOUR_PLACEMENT_ID", (flow, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        Adapty.GetPaywallProducts(flow, (products, productsError) => {
            if (productsError != null) {
                // Handle the error
                return;
            }

            // Use products to build your custom paywall UI
        });
    });
}

第二步:接受购买

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

using AdaptySDK;

void PurchaseProduct(AdaptyPaywallProduct product) {
    Adapty.MakePurchase(product, (result, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        switch (result.Type) {
            case AdaptyPurchaseResultType.Success:
                var profile = result.Profile;
                // Purchase successful, profile updated
                break;
            case AdaptyPurchaseResultType.UserCancelled:
                // User canceled the purchase
                break;
            case AdaptyPurchaseResultType.Pending:
                // Purchase is pending (e.g., user will pay offline with cash)
                break;
        }
    });
}

步骤 3. 恢复购买

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

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

using AdaptySDK;

void RestorePurchases() {
    Adapty.RestorePurchases((profile, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        // Restore successful, profile updated
    });
}

第四步:检查订阅状态

购买或恢复后,检查用户的访问等级,以决定是否显示付费墙或解锁付费功能。MakePurchaseRestorePurchases 方法已经返回更新后的用户画像;如果需要在应用的其他地方获取当前状态,请使用 GetProfile 方法:

using AdaptySDK;

void CheckPremiumAccess() {
    Adapty.GetProfile((profile, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        var hasPremiumAccess =
            profile.AccessLevels.TryGetValue("premium", out var premium) && premium.IsActive;
        // Grant access to paid features if hasPremiumAccess is true
    });
}

如需了解更多检查和监控订阅状态的方式(包括实时更新监听),请参阅检查订阅状态

后续步骤

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

你的付费墙已准备好在应用中展示。请在 App Store 沙盒Google Play Store 中测试购买流程,确保可以从付费墙完成测试购买。