iOS 17中SwiftUI内购完成后StoreKit按钮变灰求助
解决iOS 17 SwiftUI内购测试后按钮变灰的问题
问题原因
沙盒测试环境会持久保存测试Apple ID的内购记录,即使卸载重装APP,服务器端的购买状态不会自动清除,因此ProductView会识别该项目已购买,按钮变为不可点击的灰色状态。
解决方案
1. 重置沙盒测试账号的购买记录
- 登录App Store Connect,进入「用户和访问权限」→「沙盒测试员」
- 找到当前使用的测试账号,进入详情页
- 滚动到「重置购买记录」区域,点击「重置」按钮并确认操作
- 在测试设备上退出当前沙盒账号,重新登录后即可再次测试购买
2. 在应用内添加恢复购买功能(辅助方案)
如果需要在测试中快速验证状态,可以在界面中添加恢复购买按钮,调用StoreKit的同步API:
// 在你的View中添加如下按钮 Button("恢复购买") { Task { do { let _ = try await AppStore.sync() // 同步完成后,ProductView会自动更新状态 } catch { print("恢复购买失败:\(error.localizedDescription)") } } }
3. 使用新的沙盒测试账号
若暂时无法重置现有账号,可在App Store Connect中创建新的沙盒测试员账号,用新账号登录测试设备即可重新进行购买测试。
内容的提问来源于stack exchange,提问作者neowinston
相关产品推荐
相关产品推荐

