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

Flutter iOS端内购折扣促销码流程问题:PurchaseUpdated事件监听器第二次不触发

Flutter iOS端内购折扣促销码流程问题:PurchaseUpdated事件监听器第二次不触发

我之前也遇到过类似的iOS内购促销码回调失效的问题,结合你的场景,整理几个可能的排查和解决方向:

  • 检查StoreKit配置的测试状态与促销码属性
    因为你用的是Xcode的StoreKit配置文件模拟内购流程,第一次成功兑换后,测试环境的用户状态可能已经标记为已使用该促销码了。你可以试试:

    1. 在Xcode中打开Product菜单,选择StoreKit -> Reset StoreKit Configuration,重置测试状态后重启App再测试第二次兑换;
    2. 确认你在StoreKit配置里创建的促销码是否设置为可重复使用,如果是一次性的促销码,第二次使用自然不会触发回调。
  • 排查PurchaseUpdated监听器的注册时机与生命周期
    有可能第一次回调后,监听器被意外取消注册或者没有重新绑定:

    • 检查你的监听器注册逻辑,是不是只在App启动时注册了一次,而在促销码兑换完成后(比如页面销毁、状态重置)导致监听器失效;
    • 可以尝试在每次打开促销码兑换页面前,重新订阅purchaseUpdatedStream,或者把监听器放在App的根组件中,保证其全局持久存在。
  • 扩展监听范围,排查其他回调事件
    iOS的PromoCodeRedemptionSheet完成兑换后,除了PurchaseUpdated事件,可能还会触发其他相关回调:

    • 同时监听Flutter内购插件的purchaseErrorStream,看看有没有错误信息返回,帮助定位问题;
    • 确认你是否正确实现了TransactionObserver的所有相关方法,避免遗漏关键的状态回调。
  • 验证插件版本与兼容性
    旧版本的Flutter内购插件(比如in_app_purchase)可能存在iOS 15+或StoreKit 2的兼容性问题,导致第二次兑换时回调丢失:

    • 尝试将内购插件更新到最新版本,然后重新编译项目再测试。

备注:内容来源于stack exchange,提问作者FlutterDev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:54:51