StoreKit 2沙盒环境无法获取产品求助(iOS18.2/Xcode16.2)
核对Product ID的精确性
确认代码中传入Product.products(for:)的Product ID和App Store Connect中创建的完全一致,包括大小写、特殊符号(比如是否多了空格、下划线位置是否正确)。你提到的Product ID是v1,要排查代码里有没有写成v_1这类变体。验证沙盒网络连通性
物理设备需要能正常访问苹果沙盒服务器,可尝试切换Wi-Fi/蜂窝网络测试,同时检查设备是否有代理、防火墙拦截了StoreKit相关请求。另外要确保设备时间是自动同步的,时间偏差可能导致验证失败。检查订阅产品的配置细节
确认Auto-Renewable Subscription已正确设置价格层级,且至少添加了一个地区的价格——未配置价格的产品无法被沙盒环境识别。同时检查该产品是否关联了订阅组,无订阅组的订阅产品可能无法正常加载。重置沙盒测试环境
- 在设备的
设置 > [你的Apple ID] > 媒体与购买项目 > 查看账户 > 沙盒账户中,退出当前账号后重新登录。 - 打开Xcode的
Window > Organizer > 你的应用 > Archives,删除已安装的测试包,重新从Xcode直接运行到设备上(不要用Ad Hoc包测试沙盒内购)。
- 在设备的
开启StoreKit调试日志
在Xcode中选中你的Scheme,进入Edit Scheme > Run > Arguments > Environment Variables,添加OS_ACTIVITY_MODE设为enable,再添加STOREKIT_DEBUG设为1。运行应用后查看Console日志,可能会发现隐藏的错误信息(比如权限验证失败、产品状态异常)。排查StoreKit配置文件影响
虽然你当前设为None,但可以尝试创建一个.storekit配置文件,在其中添加对应测试Product ID,将Scheme的StoreKit配置切换为该文件,先在本地模拟环境验证代码逻辑是否正常。如果本地能获取产品,再切回沙盒环境排查线上配置问题。确认应用在App Store Connect的状态
确保App Store Connect中你的应用已完成基础信息填写(名称、描述、图标等),哪怕未提交审核,至少要处于“Prepare for Submission”状态——部分场景下未完善应用信息会导致沙盒内购产品无法加载。更换沙盒测试账号
尝试用新的沙盒账号登录设备,排除当前账号的异常问题。可在App Store Connect的Users and Access > Sandbox Testers中创建新测试账号。
内容的提问来源于stack exchange,提问作者lhk

