Flutter集成RevenueCat时iOS TestFlight环境无法加载订阅产品,但Debug模式正常
这种情况我之前帮好几个开发者排查过,大概率是App Store Connect配置、签名环境或者RevenueCat密钥的问题,咱们一步步来捋:
先确认App Store Connect的订阅产品状态
Debug模式下苹果的校验会宽松一些,但TestFlight是走准生产的完整校验流程。你得确保:- 订阅产品已经通过苹果审核并处于“可供销售”状态(如果是刚创建的,可能需要等几个小时甚至1天的审核周期)
- 产品绑定的App ID和你TestFlight分发的App完全一致
- 你的测试地区包含在产品设置的可销售地区列表里
检查RevenueCat的密钥和环境配置
别搞混了Sandbox和Production密钥!TestFlight属于准生产环境,会调用苹果的生产校验接口,所以你初始化RevenueCat时必须用后台的Production密钥,而不是Debug时用的Sandbox密钥。另外,要确认RevenueCat后台已经上传了正确的Apple共享密钥(Shared Secret),这个是苹果和RevenueCat校验的核心凭证。沙盒测试账号的地区要匹配
如果你用沙盒账号测试TestFlight的订阅,账号的地区必须和你订阅产品的可销售地区完全一致,不然苹果会直接返回空列表。另外,沙盒账号不能是你的开发者账号本身,得去App Store Connect单独创建。Xcode打包配置别漏了关键项
打包TestFlight的Archive时,要确认:- Xcode的“Capabilities”里已经开启In-App Purchase权限(Debug时可能自动配置,但release打包时可能被意外关闭)
- 打包的Bundle ID和App Store Connect里的完全一致,签名用的是App Store或Ad Hoc证书,不是开发证书
用日志定位具体错误
实在找不到原因的话,临时在release包中开启RevenueCat的 debug 日志:RevenueCat.setLogLevel(LogLevel.debug);然后用Xcode连接TestFlight的设备,查看控制台日志——里面会明确告诉你是产品未找到、密钥错误还是权限问题,比瞎猜高效多了。
按照这个顺序排查,90%的情况都能解决,我之前遇到最多的就是产品没审核通过或者密钥用混的问题,你先试试看?
备注:内容来源于stack exchange,提问作者Usama Karim

