求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
相关产品推荐
相关产品推荐

