我的应用程序发生了一件非常奇怪的事情。
具体来说,我发出收据请求是为了在我发现该应用程序的捆绑软件中不包含收据文件时从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登录屏幕,要求输入 BOTH 和两个Apple ID用户和密码(这使我认为他们确实从“设置”屏幕,否则他们已经在对话框中预先填充了Apple ID用户),并显示了本文中提到的错误。
我不知道现在如何进行,因为我根本无法重现此问题。它可以与我的设备上的任何沙箱用户完美配合-不适用于真正的Apple ID用户。
Apple Review向我发送了一个截图,显示了本文中提到的错误,同样,只有在真正的沙箱环境中使用真正的Apple ID用户时,我才能重现该错误。
我认为唯一的区别可能是我的设备正在运行iOS 10.x,而他们的设备可能正在运行iOS 12.x,但是我认为这不是问题。
有什么想法吗?
谢谢!
P.S。,他们没有使用我创建的Apple ID沙箱用户,而是使用自己的。我曾建议将他们的沙盒用户发送给他们进行测试,但他们表示无法接受,因为这将侵犯隐私。
更新:我已经确认在iOS 12.1上也会发生同样的事情,所以这并不是由于操作系统的不同。
答案 0 :(得分:0)
至少在我看来,刷新收据API本身似乎有问题。
我已经确认发起购买请求会导致该应用使用提供的用户(在我们的情况下为沙盒用户)的凭据从Apple下载收据
审核小组已确认购买请求对其沙盒用户可以正常使用,但是刷新收据不适用于该用户(这会导致代码16,“无法连接到iTunes Store”)!>
我还确认了“恢复”请求导致收据被下载,并且可以与提供的沙盒用户一起使用。
总而言之,“购买”和“请求”操作都使该应用程序从Apple下载收据,并且它们对于审阅团队提供的沙盒用户可以正常使用。但是,对于完全相同的用户,收据刷新请求将失败!
我仍然可以要求收据刷新,因为它可以在App Store的实际下载中正常运行,但显然不适用于应用审查。