SKProductsRequest returns 生产环境中没有产品

SKProductsRequest returns no product in production environment

我有一个使用应用内购买的 iOS 应用程序。

我已经设置好环境:

我还使用沙盒环境测试了所有产品,并且所有产品都按预期工作:商店正确收到了产品清单,我可以购买验证相应收据的产品。

我还使用 testflight 测试了该应用程序,它会自动为所有测试人员创建一个沙箱用户,一切都按预期工作

我向Apple store提交了我的申请,修改已经通过,所以目前申请处于“pending developer release”状态,所有的产品都已经批准:

为了尝试实际购买(使用真正的信用卡),我使用 iTunes 连接生成了促销代码,并在我的 iPhone 上安装了该应用程序。 但是,使用以这种方式下载的应用程序时,我在应用程序的 IAP 部分看不到任何产品。应用程序似乎下载了一个空的或无效的产品列表。 相同的应用程序版本与 Testflight 配合良好。 IAP 是否允许使用促销代码?为什么我只能使用沙盒用户才能下载正确的产品列表?由于我无法调试我的应用程序,我该如何找到问题?

编辑

我发现 here 关于产品标识符无效问题的以下几点:

  1. 您是否为新的 App ID 生成并安装了新的配置文件?
  2. 您是否已将您的项目配置为使用这个新的配置文件进行代码签名?

我已经使用 XCode 生成了自动管理签名的 App Id。

在开发者门户中,我有这种形式的 App ID

目前,我没有生成任何配置文件,事实上我在开发人员门户的 "Provisionig Profile" 部分找不到它。而且,正如您在上图中所见,在 Xcode 中,我将 "XCode Managed Profile" 视为配置文件:

这是个问题吗?如果是,我该如何解决?手动生成新的配置文件并将其安装在我的机器上是否足够?我应该为我的应用程序上传一个新版本吗?

如果配置文件丢失,为什么我的应用程序可以使用沙盒用户和 Testflight 环境正常工作?

问题是,实际上,在应用程序处于“准备销售”状态之前,您无法下载产品列表。如应用内购买常见问题解答中所述:

"申请通过后,开发者还必须批准申请发布到App Store。批准后,应用程序ID被激活到App Store。同样需要激活应用程序内购买标识符,并且只能在应用程序被激活后发生。在某些情况下,应用程序内购买标识符的激活可能会在应用程序激活后最多滞后 48 小时。 如果开发者不批准将生产应用程序发布到 App Store,则不会激活任何新的应用程序内购买标识符。当开发人员想要在 App Store 上激活应用程序之前验证应用程序时,就会出现这个问题。如果希望测试新项目的应用程序内购买过程,则必须将应用程序激活到 App Store。这只是相应应用程序提交中新的应用程序内购买标识符的问题。一旦这些应用内购买标识符被激活,提交的应用程序更新将发现这些应用内购买标识符被验证,即使更新没有被激活。"

因此,如果您的应用程序处于“待开发者发布”状态,您将无法获得通过促销代码下载的应用程序的产品列表。 应用程序在商店发布后,产品列表已正确显示。

问题与配置文件无关:自动生成的配置文件对于提交具有应用内购买功能的应用程序是有效的。