如何在iOS App Store沙盒中testing自动续订订阅的“续订”组件?

伙计们,

我正在尝试validation自动续订订阅实际上是在沙箱环境中续订。 首先,沙箱中的自动续订订阅似乎只有5分钟的有效期。 说得通。 我希望如果我等了五分钟,再打一个电话

https://sandbox.itunes.apple.com/verifyReceipt

用我的收据数据,我应该看到订阅续订5分钟。

不幸的是,事实并非如此。 所有我看到的是一个响应latest_expired_receipt_info和状态21006,这意味着“这个收据是有效的,但订阅已经过期”根据苹果文档 。

任何人都可以告诉我,他们是否能够testing自动更新订阅端到端,包括这个更新组件? 或者我必须启动这个应用程序,并跨越我的手指,prod将像广告一样工作?

或者,在将我的数据重新发布到verifyReceipt URL之前,是否需要运行某种客户端的magic / API调用?

在这里有一些关于这个话题的讨论 ,但是我不清楚,如果我能/应该期望能够通过发布到verifyReceipt URL来完全重新validation订阅,或者如果我必须在客户端上做一些事情方太。

谢谢!

从苹果的开发者论坛复制,为那些不愿意去论坛…

想通了(但不是感谢苹果文档):

1个月订阅每5分钟自动更新一次。 到现在为止还挺好。 他们自动更新5次,然后停止,所以25分钟后,你会得到21006错误。 但是,即使重新购买相同的订阅,它也不会在同一个testing帐户上自动更新,因为它已经自动更新了5次。 所以,如果你想testing续订,你已经搞乱了这些订阅一段时间,你需要创build一个新的iTunes连接testing用户。 这真的很烦人,如果我们可以重置一个testing用户帐户的整个购买历史将会更容易。 同时把所有的应用程序内testing信息放在Xcode文档中会好很多,而不是把它传播到Xcode文档/ iTunes Connect文档/人们自己弄出来的东西

希望这可以帮助。

在苹果开发论坛上的这个对话可能会为其他发现这个post的人提供一些启示: https : //devforums.apple.com/thread/105350?tstart = 0

@Lata Sadhwani,应用程序开发人员

为了testing自动更新订阅,沙箱中的过期时间是5分钟(至less对于每月订阅,不知道这是不同的时期)。 因此,当在沙箱中testing自动更新订阅时,应该每5分钟自动更新一次,并且您知道它们正在正常工作。

但是有一个问题。 这些订阅仅自动更新5次(即购买发生6次)。 之后,您将在validation收据时发生错误。 因此,如果您想在此之后进行testing,则需要使用另一个IAPtesting帐户进行testing(是的,这是一个痛苦testing,尤其是如果您已经这么做了很长一段时间的话)。

要检查订阅是否已被取消或有效,您的收据validation码将需要parsing苹果服务器的响应,他们说您应该validation每个收据。 如果订阅已过期或已被取消,则会返回相应的错误代码(非零状态)。 如果已被用户更新,则最新的收据由Apple服务器返回。