You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Xamarin Forms或.NET Maui中RevenueCat内购功能的示例代码

RevenueCat Xamarin Forms 核心功能示例代码

我在开发基于RevenueCat的Xamarin Forms应用时,发现相关示例代码比较匮乏,所以整理了以下实用的代码片段供大家参考:

1. 初始化RevenueCat SDK

在App.xaml.cs的OnStart方法中完成SDK初始化(需提前在iOS/Android项目中完成平台级配置):

using Purchases.Core;

public partial class App : Application
{
    protected override void OnStart()
    {
        // 替换为你的RevenueCat API密钥
        var configBuilder = new Purchases.PurchasesConfiguration.Builder("your_revenuecat_api_key");
        Purchases.SharedInstance.Configure(configBuilder.Build());
    }
}
  • Android补充:可在MainApplication.cs的OnCreate方法中完成初始化(若未通过Forms统一初始化)
  • iOS补充:可在AppDelegate.cs的FinishedLaunching方法中完成初始化

2. 获取可购买的订阅产品

在ViewModel中加载订阅套餐示例:

using System.Collections.ObjectModel;
using Purchases.Core;

public class SubscriptionViewModel : INotifyPropertyChanged
{
    public ObservableCollection<Package> AvailablePackages { get; set; } = new ObservableCollection<Package>();

    public async Task LoadSubscriptionPackages()
    {
        try
        {
            var offerings = await Purchases.SharedInstance.GetOfferingsAsync();
            if (offerings.Current != null && offerings.Current.AvailablePackages.Any())
            {
                foreach (var package in offerings.Current.AvailablePackages)
                {
                    AvailablePackages.Add(package);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"加载订阅产品失败:{ex.Message}");
            // 可添加用户提示逻辑
        }
    }
}

3. 处理订阅购买流程

购买按钮的命令处理代码:

public ICommand PurchaseSubscriptionCommand => new Command<Package>(async (package) =>
{
    if (package == null) return;

    try
    {
        var customerInfo = await Purchases.SharedInstance.PurchasePackageAsync(package);
        if (customerInfo.ActiveSubscriptions.Any())
        {
            await Application.Current.MainPage.DisplayAlert("成功", "订阅已激活", "确定");
            // 这里添加订阅成功后的权限开放逻辑
        }
        else
        {
            await Application.Current.MainPage.DisplayAlert("提示", "订阅未完成,请重试", "确定");
        }
    }
    catch (PurchasesException ex)
    {
        switch (ex.ErrorCode)
        {
            case PurchasesErrorCode.UserCancelled:
                // 用户主动取消购买,无需额外提示
                break;
            case PurchasesErrorCode.PaymentPending:
                await Application.Current.MainPage.DisplayAlert("提示", "支付处理中,请稍后查看状态", "确定");
                break;
            default:
                await Application.Current.MainPage.DisplayAlert("错误", $"购买失败:{ex.Message}", "确定");
                break;
        }
    }
});

4. 检查用户当前订阅状态

应用启动或权限验证时调用:

public async Task CheckSubscriptionStatus()
{
    try
    {
        var customerInfo = await Purchases.SharedInstance.GetCustomerInfoAsync();
        bool hasActiveSubscription = customerInfo.ActiveSubscriptions.Any();
        
        if (hasActiveSubscription)
        {
            // 开放付费功能
            Console.WriteLine("用户拥有活跃订阅");
        }
        else
        {
            // 引导用户前往订阅页面
            Console.WriteLine("用户未订阅");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"检查订阅状态失败:{ex.Message}");
    }
}

内容的提问来源于stack exchange,提问作者BillF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:39:19