首页 > 解决方案 > 由于 iTunes Store 连接错误,Receipt Refresh 导致 Apple Review 拒绝 App

问题描述

我看到我的应用程序发生了一件非常奇怪的事情。

具体来说,当我检测到应用程序的捆绑包中不包含收据文件时,我发出收据请求以便从 Apple 下载收据。

当然,调用收据刷新 API 会显示 Apple ID 登录屏幕。

为了测试我的应用程序,我在 iTunes Connect 中创建了“测试”/“沙盒”用户。

在我的设备(带WiFi的iPad)上运行该应用程序时,该应用程序成功调用了刷新回执功能,然后果然弹出Apple ID登录屏幕。我输入了在 iTunes Connect 中配置的测试/沙盒用户的正确凭据,一切都很好(即,收据已成功下载。)

但是,如果我尝试使用真正的 Apple ID 用户,我会收到“didFailWithError”,并且本地化错误描述为:“无法连接到 iTunes Store”,错误代码为“16”。

在我看来,这是意料之中的。

现在,可悲的是,当我将我的构建提交给 Apple Review 时,他们得到了上面提到的确切错误。

他们说他们正在使用沙盒用户,因此他们拒绝了该应用程序,因为他们无法继续。

注意:他们也使用带 WiFi 的 iPad 来测试应用程序。

只有在使用真实的 Apple ID 用户帐户时,我一直能够重现此问题,并且从未遇到过沙盒用户的问题!

我在某处读到过,还必须确保沙盒用户在测试时退出“设置”屏幕。我礼貌地要求 Apple Review 确保他们在测试时不会登录到“设置”。

他们给我发了两张截图:一张是 Apple ID 登录屏幕,要求输入Apple ID 用户和密码(这让我认为他们确实已经退出了“设置”屏幕,否则他们已经有Apple ID 用户预先填充在对话框中)和一个显示本文中提到的错误的用户。

我现在不知道如何继续,因为我根本无法重现这个问题。它适用于我设备上的任何沙盒用户——它只是不适用于真正的 Apple ID 用户。

Apple Review 给我发了一张截图,显示了这篇文章中提到的错误,同样,我只能在真正的沙盒环境中使用真正的 Apple ID 用户时重现该错误。

我认为唯一的区别可能是我的设备运行的是 iOS 10.x,而他们的设备可能运行的是 iOS 12.x,但我认为这应该不是问题。

有什么想法吗 ?

提前致谢!

PS,他们没有使用我创建的 Apple ID 沙盒用户——他们使用自己的。我曾建议将我的沙盒用户发送给他们进行测试,但他们说他们不能接受,因为这会侵犯隐私。

更新:我已经确认 iOS 12.1 上也发生了同样的事情,所以这不是由于操作系统的差异。

标签: iosreceipt-validation

解决方案


至少在我看来,刷新收据 API 本身似乎存在问题。

我已确认发起购买请求会导致应用程序从 Apple 下载带有所提供用户(在我们的案例中为沙盒用户)凭据的收据。

审核团队已确认购买请求对其沙盒用户正常工作,但是,刷新收据不适用于完全相同的用户(它会导致代码 16,“无法连接到 iTunes Store”)!

我还确认“恢复”请求会导致收据被下载,并且它可以与提供的沙盒用户一起使用。

总之,“购买”和“请求”操作都会导致应用程序从 Apple 下载收据,并且它们对于审核小组提供的沙盒用户正常工作。但是,对于完全相同的用户,收据刷新请求失败!

我仍然可以要求刷新收据,因为它应该适用于实际的 App Store 下载,但它显然不适用于应用审查。


推荐阅读