You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

正式版内购产品iOS10+报“无法连接iTunes Store”错误求助

解决iOS 10+环境下In-App Purchase报错SKErrorCode=2的问题

针对你遇到的情况——沙箱测试正常、已通过审核产品状态为Ready for sale,但iOS 10及以上版本出现SKErrorCode.rawValue=2(对应提示Cannot connect to iTunes Store)的错误,我整理了几个高优先级的排查和修复方向:

  • 检查ATS(App Transport Security)配置
    iOS 10开始ATS的安全策略默认更严格,即便产品已上架,也可能因ATS限制导致IAP连接失败。打开Info.plist,确认是否配置了正确的ATS例外:

    • 可以添加NSAllowsArbitraryLoads并设为YES(Apple允许IAP场景使用此配置,不会影响审核);
    • 更推荐的精准配置是添加NSExceptionDomains,将itunes.apple.combuy.itunes.apple.com等IAP相关域名加入例外,确保HTTPS连接正常。
  • 验证网络环境与测试账号

    • iOS 10+对网络代理、VPN的兼容性更差,测试时建议关闭代理/VPN,切换到稳定的4G或家庭WiFi;
    • 若使用沙箱账号测试,务必退出设备上的正式App Store账号,确保沙箱账号未过期、且对应地区与产品上架地区匹配;
    • 正式环境测试时,确认使用的Apple ID无支付限制、账号状态正常。
  • 核对IAP产品配置细节

    • 再次检查App Store Connect中产品的Availability设置,确保测试设备所在地区已被包含在产品的可用区域内;
    • 确认产品的Price TierCleared for Sale状态无误,避免因地区定价或上架状态的隐性问题导致iOS 10+无法识别产品。
  • 代码层面的适配检查

    • iOS 10要求IAP相关的UI操作和回调必须在主线程执行,检查你的代码中:
      • SKProductsRequest的发起、SKPaymentQueue的交易监听注册是否在主线程;
      • SKPaymentTransactionObserver的回调处理是否切换到主线程更新UI或处理逻辑;
    • 确保完整实现了SKProductsRequestDelegateproductsRequest(_:didReceive:)request(_:didFailWithError:)方法,避免因错误回调未处理导致的隐性问题。
  • 重置测试环境

    • 删除App,重启测试设备,重新安装后再测试;
    • 进入设置 > iTunes & App Store,退出当前账号后重新登录(沙箱或正式账号),清除App Store缓存可能带来的影响。

这些是iOS 10+环境下IAP报错Cannot connect to iTunes Store的最常见诱因,建议从ATS配置和网络环境开始逐一排查,通常能快速定位问题。

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

火山引擎 最新活动