这是我从该领域的专家那里得到的:
技术说明 2259 的常见问题解答 6 - 提供了产品预检失败的已知原因的完整列表(其中 SKProductRequest 中的所有项目都在 invalidProductsIdentifiers 数组中返回。
这是常见问题6
为什么我的产品标识符在 invalidProductIdentifiers 数组中返回?由于以下一种或多种原因,您的产品标识符可能会在 invalidProductIdentifiers 数组中返回:
您没有完成所有财务要求(请参阅本文档的“合同、税务和银行信息”部分)。您没有使用明确的 App ID。您没有使用与您的显式 App ID 关联的 Provisioning Profile。您没有在代码中使用正确的产品标识符。有关产品标识符的更多信息,请参阅技术问答、QA1329、“应用内购买产品标识符”。您没有清除在 iTunes Connect 中出售的应用内购买产品。您可能已经修改了您的产品,但这些更改尚不适用于所有 App Store 服务器。如果您或 App Review 在 iTunes Connect 中拒绝了您最近的二进制文件。
我添加了两个额外的完整性原因(很少发生) 1. 项目的价格等级是 80+(500 美元+) 2. 测试设备已越狱。
还有第三个原因,它源于对沙盒环境的更改,其中简单的解决方案是清除应用程序和所有配置文件,然后重置设备。说明如下 1. 删除应用程序。2.进入设置应用程序->通用->配置文件-删除所有配置文件 3.同时按住应用程序和睡眠按钮直到出现Apple标志-(约10秒) 4.iOS设备重启后,安装应用程序和配置文件并重新测试。
让我们假设重置 iOS 设备没有任何效果。在这种情况下,FAQ 中列出的原因之一是正确的。
关于财务要求,所有合同都必须完整——不能有待处理的项目。接下来要尝试的是重新下载配置文件 - 在某些情况下,可以在您不知情的情况下更改开发证书。通常,您会收到通知,但有时通知会延迟。
可能是二进制文件已上传到 iTunesConnect,而 iTunesConnect 中的当前状态为 - 拒绝。首先,您应该知道,不需要将二进制文件上传到 iTunesConnect。存在一个挥之不去的误解,即必须上传二进制文件才能测试应用内购买应用程序。这是错误的并且使测试过程复杂化。但是,如果您的情况确实如此,则解决方案是更改 iTunesConnect 上的应用程序状态。IF and only IF,二进制文件先前已上传,并且当前状态为拒绝,然后按照这些说明进行操作。
将应用程序的一个版本上传到 iTunesConnect 以强制状态更改为“待审核”。App Store 需要一天(更可能是几天)才能审核应用程序。同时,您可以测试该应用程序。假设您发现仍有工作要做,您将自行“拒绝”该应用程序,进行更改并重新开始循环。在某个时候,应用程序将准备就绪,您将把它留待审核。