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

如何在Xamarin Forms/MAUI中入门RevenueCat内购开发

在Xamarin Forms iOS(Mac版VS2022)中集成RevenueCat的入门摸索笔记

目前找不到Xamarin Forms中使用RevenueCat绑定的官方文档或示例,自己摸索了一套步骤,还没做测试,欢迎大家补充或指正。本文适用于Mac版Visual Studio 2022的Xamarin Forms iOS项目,MAUI项目操作流程可能类似。

前期准备

  • 先在RevenueCat后台创建项目,获取对应的API密钥和App ID
  • 打开Mac版Visual Studio 2022,加载你的Xamarin Forms iOS项目

集成绑定库

  • 通过NuGet搜索并安装RevenueCat.Xamarin.iOS(如果没有官方包,需要自行创建绑定项目)

    注:如果官方没有现成NuGet包,得手动创建Xamarin绑定项目,导入RevenueCat的iOS SDK框架文件(.framework),配置绑定项目的ApiDefinition.cs和StructsAndEnums.cs来映射原生API

初始化RevenueCat

在iOS项目的AppDelegate.cs的FinishedLaunching方法中添加初始化代码:

using RevenueCat;

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    // 替换为你的RevenueCat API密钥
    Purchases.SharedInstance.ConfigureWithAPIKey("你的API密钥");
    // 可选:自定义用户ID,不设置会自动生成匿名ID
    // Purchases.SharedInstance.SetAppUserID("用户唯一标识");
    return base.FinishedLaunching(app, options);
}

实现购买功能

  1. 在Xamarin Forms共享项目中定义接口:
public interface IRevenueCatService
{
    Task<List<Subscription>> GetAvailableSubscriptions();
    Task<PurchaseResult> PurchaseSubscription(Subscription subscription);
}

// 辅助模型类
public class Subscription
{
    public string Id { get; set; }
    public string Price { get; set; }
    public string Title { get; set; }
}

public class PurchaseResult
{
    public bool Success { get; set; }
    public string ErrorMessage { get; set; }
    public PurchaserInfo PurchaserInfo { get; set; }
}
  1. 在iOS项目中实现接口:
public class RevenueCatService : IRevenueCatService
{
    public async Task<List<Subscription>> GetAvailableSubscriptions()
    {
        var subscriptions = new List<Subscription>();
        var offerings = await Purchases.SharedInstance.GetOfferingsAsync();
        
        if (offerings.Current != null)
        {
            foreach (var package in offerings.Current.AvailablePackages)
            {
                subscriptions.Add(new Subscription
                {
                    Id = package.Identifier,
                    Price = package.Product.Price.ToString(),
                    Title = package.Product.LocalizedTitle
                });
            }
        }
        return subscriptions;
    }

    public async Task<PurchaseResult> PurchaseSubscription(Subscription subscription)
    {
        var offerings = await Purchases.SharedInstance.GetOfferingsAsync();
        var targetPackage = offerings.Current?.AvailablePackages
            .FirstOrDefault(p => p.Identifier == subscription.Id);

        if (targetPackage == null)
        {
            return new PurchaseResult 
            { 
                Success = false, 
                ErrorMessage = "未找到指定订阅套餐" 
            };
        }

        try
        {
            var purchaserInfo = await Purchases.SharedInstance.PurchasePackageAsync(targetPackage);
            return new PurchaseResult 
            { 
                Success = true, 
                PurchaserInfo = purchaserInfo 
            };
        }
        catch (Exception ex)
        {
            return new PurchaseResult 
            { 
                Success = false, 
                ErrorMessage = ex.Message 
            };
        }
    }
}
  1. 在共享项目中通过依赖服务调用:
var revenueCatService = DependencyService.Get<IRevenueCatService>();
var subscriptions = await revenueCatService.GetAvailableSubscriptions();

// 展示订阅列表,用户选择后执行购买
var selectedSubscription = subscriptions.First();
var purchaseResult = await revenueCatService.PurchaseSubscription(selectedSubscription);

验证订阅状态

在需要验证的位置调用API获取用户订阅信息:

var purchaserInfo = await Purchases.SharedInstance.GetPurchaserInfoAsync();
if (purchaserInfo.ActiveSubscriptions.Any())
{
    // 用户存在活跃订阅
}
else
{
    // 用户无活跃订阅
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:27:15