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

iOS StoreKit 2删除沙箱用户后购买仍正常问题求助

沙箱购买重置状态异常问题

使用Xcode 16.1搭配iOS 18.2真机测试沙箱内购,已按Apple官方指南配置沙箱用户。购买功能正常,触发购买时设备会弹出沙箱用户凭证请求,但重置购买状态时出现异常:即使在App Connect中删除沙箱用户,再次发起购买仍能正常完成,不会弹出新的用户凭证请求。

购买功能代码

func purchase(_ product: Product) async throws -> Transaction? {
    guard let uuid = UUID(uuidString: "my test uuid") else { return nil }
    let result = try await product.purchase(options: [.appAccountToken(uuid)])
    switch result {
    case .success(.verified(let transaction)):
        purchasedNonConsumables.insert(product)
        await transaction.finish()
        return transaction
    default:
        return nil
    }
}

排查解决建议

  • 清除设备沙箱账户缓存:进入iOS「设置」→「App Store」→ 拉至底部找到「沙箱账户」,点击已登录的账户选择退出,重启设备后重新测试购买流程。
  • 清理本地未完成交易:在App启动时调用Transaction.currentEntitlements获取所有有效交易记录,遍历调用await transaction.finish()完成清理,避免本地缓存的交易状态干扰。
  • 等待服务器同步:删除沙箱用户后Apple服务器存在同步延迟,建议等待10-15分钟后再进行测试。
  • 重置测试环境:卸载测试App,清理设备后台进程后重新安装,消除本地残留的沙箱会话信息。
  • 调整appAccountToken配置:当前代码使用固定UUID作为appAccountToken,该参数会关联用户与交易记录,若需完全重置购买状态,可临时移除该参数或更换不同UUID测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:52:32