Ios 由于iTunes商店连接错误,收据刷新导致Apple Review拒绝应用程序

Ios 由于iTunes商店连接错误,收据刷新导致Apple Review拒绝应用程序,ios,receipt-validation,Ios,Receipt Validation,我看到我的应用程序发生了一件非常奇怪的事情 具体来说,当我检测到应用程序包中不包含收据文件时,我发出收据请求是为了从苹果下载收据 当然,调用收据刷新API会显示Apple ID登录屏幕 为了测试我的应用程序,我在iTunes Connect中创建了“测试”/“沙盒”用户 在我的设备(带WiFi的iPad)上运行该应用程序时,该应用程序成功调用刷新接收功能,然后果然弹出Apple ID登录屏幕。我输入了iTunes Connect中配置的测试/沙盒用户的正确凭据,一切正常(即收据下载成功) 但是,

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

具体来说,当我检测到应用程序包中不包含收据文件时,我发出收据请求是为了从苹果下载收据

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

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

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

但是,如果我尝试使用真实的Apple ID用户,我会得到“didFailWithError”,本地化的错误描述是:“无法连接到iTunes商店”,错误代码是“16”

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

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

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

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

我一直能够重现这个问题,只有当使用真正的苹果ID用户帐户,从来没有一个沙盒用户的问题

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

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

我现在不知道如何继续,因为我根本无法重现这个问题。它可以完美地与我设备上的任何沙盒用户协同工作——只是不能与真正的Apple ID用户协同工作

Apple Review向我发送了一个屏幕截图,显示了这篇文章中提到的错误,同样,我只能在真正的沙盒环境中使用真正的Apple ID用户时再现这个错误

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

有什么想法吗

提前谢谢

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


更新:我已经确认,同样的事情发生在iOS 12.1上,因此这不是由于操作系统的差异造成的。

至少在我的情况下,刷新接收API本身似乎有问题

我已经确认,发起购买请求会导致应用程序从苹果下载带有所提供用户(在我们的例子中是沙盒用户)凭据的收据

审查小组已确认购买请求与他们的sandbox用户正确配合,但刷新回执与同一用户不配合(导致代码16,“无法连接到iTunes商店”)

我还确认了一个“还原”请求会导致收据被下载,并且它与提供的沙盒用户一起工作

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


我仍然可以要求刷新收据,因为它对于实际的应用商店下载应该可以正常工作,但对于应用审查显然不起作用。

iOS显示的是错误消息还是您的代码?iOS显示的是错误消息。“didFailWithError”返回的是帖子中的确切错误,代码为16。当你的应用程序无法刷新收据时,它会做什么?它在“didFailWithError”中显示收到的错误,并且有一个“重试”按钮。当用户按下“重试”按钮时,应用程序将再次尝试刷新收据。他们“重试”了几次,但都没有成功——仍然得到相同的错误。另外:在调用收据刷新功能之前,我会检查是否存在有效的internet连接。用户是否可以选择继续而不刷新收据?您确定显示错误的是iOS吗?听起来您正在显示错误对话框。如果收据刷新请求失败,您只需默默地继续