iOS内购:未发布时测试真实购买与RevenueCat购买历史调试问题
解答:Ionic 4 + RevenueCat 内购测试问题
问题1:无法在未发布应用时测试真实购买
首先得明确苹果的内购机制限制:只要你的应用还没正式上架到App Store,不管是直接部署到设备还是通过TestFlight测试,都会强制进入沙箱环境——这是苹果为了避免测试过程中产生真实扣费的安全设计,没有办法绕过这个限制触发真实支付和获取生产收据。
不过你可以用这些方式模拟测试旧用户恢复购买的逻辑:
- 用沙箱测试账号模拟多场景:创建多个沙箱账号,分别完成不同订阅的购买,然后删除应用再用这些账号测试恢复功能,验证你的恢复逻辑是否正常运转。
- 借助RevenueCat控制台/API模拟历史数据:你可以在RevenueCat的后台手动调整用户的购买记录,或者调用它的Web API来生成模拟的历史购买数据,以此测试恢复逻辑。
- 若一定要测试真实流程:可以先提交应用审核上架,之后用正式版测试真实购买(记得测试后申请苹果退款,避免不必要的扣费)。
问题2:getPurchaserInfo返回的allPurchaseDates仅显示最新购买日期
这其实是RevenueCat SDK的设计逻辑:allPurchaseDates字段本身就是按产品ID存储对应订阅的最新购买日期,而不是返回所有历史购买记录的数组。
如果需要获取用户的完整历史购买记录,有这些解决方案:
- 使用RevenueCat Web API:调用
/v1/subscribers/{app_user_id}接口,这个接口会返回该用户的所有订阅历史明细,包括每一次的购买记录。 - 自行存储购买记录:在你的应用中监听购买成功事件,每次用户完成购买后,将购买数据(比如产品ID、购买日期、订单号等)同步到你的后端服务器,这样你可以随时查询用户的全量历史购买记录。
- 检查SDK版本:你当前使用的
cordova-plugin-purchases是1.1.0版本,相对比较旧,建议升级到最新版本,看看是否有相关功能的更新或bug修复。
内容的提问来源于stack exchange,提问作者jkufrin




