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

迁移至StoreKit 2后调用AppStore.sync()无法恢复非消耗型内购问题

我经手的3个已经上线App Store的项目均已通过StoreKit 2实现非消耗型商品的购买恢复功能,正式环境下用户恢复购买的流程无异常。你遇到的沙箱环境无法恢复的问题属于常见的沙箱环境限制/配置错误,可按以下方向排查:

  • 沙箱账号与同步延迟处理
    首先确认测试使用的沙箱账号是在App Store Connect后台创建的有效账号,购买商品时登录的就是该账号,未切换过其他沙箱账号。沙箱环境的交易数据同步存在随机延迟,调用AppStore.sync()后不要立刻读取权限,建议添加1~2秒的延迟后再遍历Transaction.currentEntitlements,我之前的测试中遇到过多次调用sync后立刻读取无结果、延迟后读取正常的情况。
  • 配置匹配校验
    确认当前运行App的Bundle ID与App Store Connect中配置内购商品所属的Bundle ID完全一致,包括大小写、后缀等所有细节,StoreKit 2对权限匹配的校验严格度远高于StoreKit 1,只要存在一处不一致就无法读取到历史交易权限。
  • 交易过滤逻辑排查
    你当前的代码仅处理了.verified的合法交易,沙箱环境偶发会返回.unverified的异常交易,建议添加日志输出.unverified附带的错误信息,排查是否存在签名校验不通过导致交易被过滤的情况,比如测试时使用的签名证书不符合要求、App存在篡改风险被StoreKit拦截。
  • 系统版本适配
    StoreKit 2全套API仅支持iOS 15.0及以上系统,如果测试设备系统版本低于iOS 15.0将无法读取到任何交易数据。另外iOS 15.0~iOS 15.3的小版本存在多个StoreKit 2的官方已知Bug,建议升级测试设备到iOS 15.4及以上版本后复测。

你可以打TestFlight包使用测试账号验证恢复流程,TestFlight环境的交易逻辑与正式App Store环境完全一致,只要TestFlight环境下恢复购买正常,正式上线后就不会出现用户无法恢复的问题,沙箱环境本身存在大量不稳定的情况,测试结果不作为正式上线的唯一判断标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:04