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

如何重新触发SKProductsRequestDelegate的productsRequest()?内购价格不显示致审核被拒

解决IAP订阅价格在审核端不显示的问题

这种审核卡壳的情况真的太闹心了——自己本地测试完全正常,到审核那边就掉链子,我帮你梳理几个大概率能解决问题的方向:

1. 先查App Store Connect的订阅配置

  • 确认地区价格全覆盖:审核团队大概率用的是美国区账号,你得检查所有订阅是不是都配置了美国区的价格,别只配了你自己测试的地区。哪怕漏一个地区的价格,都可能导致该地区无法加载订阅信息。
  • 检查订阅状态:确保所有订阅产品都是「已批准」状态,没有处于「待提交」「被拒绝」的状态,单个订阅的异常会影响整个列表的加载。
  • 核对产品ID完全匹配:代码里用的productIdentifier和App Store Connect里的必须完全一致,大小写、拼写、连字符都不能错,哪怕多一个空格都会导致识别失败。

2. 补全SKProductsRequest的错误处理逻辑

你现在的代码只处理了请求成功的情况,完全没捕捉失败或无效ID的场景!赶紧加上这两个方法,才能知道审核时到底出了什么问题:

extension SubscriptionService: SKProductsRequestDelegate {
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        // 先检查无效的产品ID
        if !response.invalidProductIdentifiers.isEmpty {
            print("⚠️ 无效的产品ID: \(response.invalidProductIdentifiers)")
        }
        self.options = response.products.map { Subscription(from: $0) }
        tableView.reloadData()
    }
    
    // 新增请求失败的处理
    func request(_ request: SKRequest, didFailWithError error: Error) {
        print("❌ IAP请求失败: \(error.localizedDescription)")
        // 建议把错误信息上报到你的日志系统,方便后续排查
    }
}

3. 模拟审核环境测试

审核用的是沙盒环境,有时候本地沙盒缓存会出问题,你可以这么测试:

  • 退出自己的App Store账号,用App Store Connect创建的沙盒测试账号登录,完全卸载App后重新安装,看看价格是否正常显示。
  • 重启设备或者清理App缓存后再测试,避免旧数据干扰。

4. 检查网络与地区限制

  • 审核人员的设备可能在特定地区,或者网络有代理,导致IAP请求无法正常返回。你可以在代码里加个网络状态检查,确保请求时网络可用;同时确认App没有限制特定地区的访问权限。
  • 如果你的App有地区过滤逻辑,别把审核团队常用的地区(比如美国)给排除了。

5. 提交审核时的关键备注

既然自己这边完全正常,提交审核时一定要写清楚:

  • 你测试过的设备型号、iOS版本
  • 可用的沙盒测试账号(可以专门创建一个给审核团队用)
  • 你这边能正常显示价格的截图
    这样审核团队能更快定位问题,甚至直接复现你的正常状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:07