Flutter非消耗型IAP故障求助:模拟器无法完成购买、真机找不到商品
针对Flutter in_app_purchase插件两类异常的解决方案
1. 模拟器沙箱购买弹窗重复、状态无法完成
- 核心原因:模拟器对非消耗型IAP的沙箱支持存在稳定性缺陷,且若未正确完成交易确认,苹果会重复触发交易请求。
- 修复步骤:
- 放弃模拟器测试IAP,改用真机沙箱环境测试,这是最可靠的方式;
- 检查代码逻辑:当收到
PurchaseStatus.purchased状态的订单时,必须立即调用InAppPurchase.instance.completePurchase(purchase)完成交易确认,未执行此操作会导致苹果持续重试; - 验证沙箱账号状态:确保账号未被锁定,且不要在多台设备频繁切换同一沙箱账号测试。
2. iPad真机IAP归入notFoundIDs列表
- 核心原因:审核中的非消耗型IAP无法在沙箱环境被检索到(订阅类IAP的沙箱生效规则不同,所以现有订阅系统正常),另外可能存在商品ID不匹配或缓存问题。
- 修复步骤:
- 等待IAP审核通过后再进行真机测试,苹果仅对已通过审核的非消耗型IAP开放沙箱访问权限;
- 严格核对商品ID:确保代码中使用的ID与App Store Connect中创建的完全一致(注意大小写、特殊字符、拼写);
- 检查设备设置:确认真机已登录有效的沙箱账号,未开启“限制广告跟踪”等可能干扰IAP检索的设置;
- 清除缓存:重启App Store Connect后台和真机应用,避免缓存导致的商品ID无法同步。
内容的提问来源于stack exchange,提问作者bahadir arslan
相关产品推荐
相关产品推荐

