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

Flutter in_app_purchase安卓端:订阅续费PurchaseDetails未被purchaseStream捕获

Android IAP订阅续期事件未被purchaseStream监听的解决方案
  • 升级Play Billing Library版本
    旧版本的Play Billing Library存在订阅续期事件监听的兼容性问题,建议使用最新稳定版(6.0+)。在安卓项目的build.gradle中确认依赖配置:

    dependencies {
        implementation 'com.android.billingclient:billing:6.0.1'
    }
    
  • 确保purchaseStream持续监听
    避免仅在App初始化时订阅一次purchaseStream,需在App从后台恢复、启动时重新建立监听。以Flutter的in_app_purchase插件为例:

    late StreamSubscription<List<PurchaseDetails>> _subscription;
    
    @override
    void initState() {
      super.initState();
      _setupPurchaseListener();
    }
    
    @override
    void didChangeAppLifecycleState(AppLifecycleState state) {
      if (state == AppLifecycleState.resumed) {
        _setupPurchaseListener();
      }
      super.didChangeAppLifecycleState(state);
    }
    
    void _setupPurchaseListener() {
      _subscription?.cancel();
      _subscription = InAppPurchase.instance.purchaseStream.listen(
        _handlePurchaseEvents,
        onError: (err) => // 处理监听错误,
        onDone: () => _subscription?.cancel(),
      );
    }
    
    void _handlePurchaseEvents(List<PurchaseDetails> purchases) {
      for (var purchase in purchases) {
        if (purchase.status == PurchaseStatus.purchased) {
          // 处理订阅(包括续期)逻辑
        }
      }
    }
    
  • 主动查询订阅状态作为兜底
    即使purchaseStream未捕获到续期事件,也要定期主动查询用户的订阅状态,比如在App启动、进入订阅管理页面时执行:

    Future<void> _checkCurrentSubscriptions() async {
      final response = await InAppPurchase.instance.queryPurchaseDetails(PurchaseType.subscription);
      if (response.error != null) return;
      for (var purchase in response.purchaseDetails) {
        if (purchase.status == PurchaseStatus.purchased || purchase.status == PurchaseStatus.restored) {
          // 更新本地订阅状态
        }
      }
    }
    
  • 验证测试环境配置
    使用Google Play Console的测试工具手动触发续期事件,而非依赖自动的5分钟测试推送——测试环境的自动续期可能存在延迟。同时确认测试账号已正确添加到许可测试列表中。

  • 检查实时开发者通知配置
    在Google Play Console中开启实时开发者通知,该通知可以触发App主动刷新订阅状态,作为purchaseStream监听的补充机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:11:07