iOS沙盒环境自动续订订阅

31

我对 iOS 自动续订订阅有以下问题:

a) 沙盒环境下的自动续订订阅是否真正实现了自动续订? 问题似乎是订阅没有自动续订,尽管文档说即使在沙盒环境下,它也应该发生 6 次。

b) 我们需要调用 restoreCompletedTransactions 来获取自动续期订阅的新收据, 还是 -paymentQueue:updatedTransactions: 方法会被iOS自动调用?(我猜它会在'启动'和'从后台旋转'时自动调用,但不确定)

c) 您如何在多个设备上处理相同的订阅?这可以通过 restoreCompletedTransactions 处理,但调用它将提示用户输入密码,因此每次启动应用程序都调用它并不方便。

2个回答

32

a) 自动续订订阅在沙盒环境中不一致。有时候一个订阅会在结束前多次(大约5次)自动续订。而有时则完全不会续订。

b) (仅适用于iOS6交易收据)如果您存储了以前的收据(最好在服务器上),则无需调用restoreCompletedTransactions来检查订阅的状态。只要获取您为该用户存储的任何订阅收据,并将其提交给App Store进行验证。他们将回复包含expires_datelatest_receipt_info,您可以使用它来确定当前订阅状态。

c) 您应提示新用户“恢复先前的购买”,然后调用restoreCompletedTransactions。然后,向App Store提交其中一个收据(最好来自您的服务器)以进行验证,以获取有关交易的解码详细信息。在收据信息中查找original_transaction_id键。这将始终包含该用户首次与您启动订阅的ID。如果将此ID与系统中的其他ID进行比较,则应能够确定哪些设备共享Apple帐户。(由于Apple不允许您查看用户的Apple ID,因此这是识别跨多个设备的帐户的最佳方法)。

类似于此问题:iOS auto-renew expired at the end of current subscription period


抱歉,我无法通过文本更新来回答这个问题。请提供要翻译的英文文本,我会为您进行翻译。 - AndyRyan
@andrew 在沙盒应用内购买测试中,我有2个产品在同一组中购买。我认为最新的应该只订阅,而同一组中的其他产品应自动取消。是这样吗?如果是,那么为什么我在同一组中获得了2个购买产品? - Bhavin Bhadani
就您提到的第一点而言,这可能是因为每个沙盒测试员登录每8小时窗口期内只能进行5次续订的限制。 - Bradley Thomas
@BradThomas,你有这方面的文档吗?拥有这样的规则会非常好,而不是我目前最好的理解是“沙盒是垃圾和不可靠的测试”。 - Meekohi
@Meekohi 我手头没有参考资料,我只能像你一样去谷歌搜索。但是如果我没记错的话,我相信我找到了那些数字的可靠参考资料。 - Bradley Thomas

13
补充一下,似乎 苹果文档中 的这行代码被误解了。
续订的速度会加快,自动续订订阅每天最多续订6次。这可以让您测试应用程序如何处理订阅续订、订阅间断以及包括间隙的订阅历史记录。
这似乎意味着每天所有订阅只会续订6次。而不是每个订阅在取消之前会续订6次。这让我困惑了一段时间。
它也似乎是在24小时内进行的。没有在规定的时间刷新。例如,我在早上11点订阅了一个没有续订的服务。我在下午2点再次订阅,它就续订了6次。

2
在这种情况下,如何模拟用户取消订阅?在用户或系统取消订阅后,JSON响应将是什么?需要处理哪些标志? - Jeff Bootsholz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接