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
相关产品推荐
相关产品推荐

