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

Flutter中如何实现Google Play开发者自定义订阅优惠的条件化展示?

Flutter 订阅自定义资格优惠实现方案

针对你需要给特定用户(如运动爱好者)展示专属订阅折扣的场景,以下是基于in_app_purchase和in_app_purchase_android的具体实现步骤:

1. 依赖配置

先确保pubspec里的依赖是最新稳定版,旧版本可能存在API兼容问题:

dependencies:
  in_app_purchase: ^3.1.10
  in_app_purchase_android: ^0.3.0+18

执行flutter pub get完成依赖安装。

2. 正确获取Android订阅优惠详情

跨平台的ProductDetails不会直接暴露订阅优惠,必须先将其转为Android专属的AndroidProductDetails,才能拿到SubscriptionOfferDetails:

import 'package:in_app_purchase/in_app_purchase.dart';
import 'package:in_app_purchase_android/in_app_purchase_android.dart';

// 处理商品详情回调
void processProductDetails(List<ProductDetails> products) {
  for (final product in products) {
    // 仅处理Android平台的订阅商品
    if (product is AndroidProductDetails && product.productType == ProductType.subscription) {
      // 获取该订阅的所有优惠方案
      final subscriptionOffers = product.subscriptionOfferDetails;
      if (subscriptionOffers != null) {
        for (final offer in subscriptionOffers) {
          // 这里可以获取优惠ID、折扣价、周期等核心信息
          print('优惠ID: ${offer.offerId}');
          print('首次折扣价: ${offer.pricingPhases.pricingPhaseList.first.formattedPrice}');
          print('优惠周期: ${offer.pricingPhases.pricingPhaseList.first.billingPeriod}');
        }
      }
    }
  }
}

3. 自定义资格判断与定价展示

根据你的业务条件(比如用户是否标记为运动爱好者),筛选并展示对应定价:

// 假设已通过用户系统获取到该标记
bool userIsSportsLover = true;

// 筛选符合自定义资格的优惠(比如后台创建的优惠ID为"sports_10_percent_off")
AndroidSubscriptionOfferDetails? getEligibleOffer(AndroidProductDetails product) {
  return product.subscriptionOfferDetails?.firstWhere(
    (offer) => offer.offerId == 'sports_10_percent_off',
    orElse: () => null,
  );
}

// 展示对应定价
void displayPricing(AndroidProductDetails subscriptionProduct) {
  final eligibleOffer = getEligibleOffer(subscriptionProduct);
  if (userIsSportsLover && eligibleOffer != null) {
    // 展示专属优惠价
    print('专属折扣价: ${eligibleOffer.pricingPhases.pricingPhaseList.first.formattedPrice}');
  } else {
    // 展示原价
    print('原价: ${subscriptionProduct.price}');
  }
}

4. 关键注意事项

  • 后台配置校验:确保Google Play后台已创建开发者自定义资格的优惠,且优惠ID与代码中完全一致;优惠状态需为已激活。
  • 测试环境配置:测试账号必须加入Google Play的许可测试列表,否则无法看到优惠。
  • 平台区分:上述代码仅针对Android,iOS平台需使用SKProductDiscount(通过in_app_purchase_ios包实现)。
  • 依赖版本:如果仍无法获取优惠,检查依赖是否为最新版,旧版AndroidProductDetails可能未开放subscriptionOfferDetails字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:56:08