2011-02-25 44 views
1

this Article中,Apple编写了如何从用户的角度启用自动续订订阅。但我的问题是如何处理这个自动更新订阅作为一个应用程序的开发人员?如何作为开发人员处理自动更新订阅

在我的应用程序(目前正在开发中),用户可以通过应用程序内购买购买一些订阅(30天,3个月和1年)。成功付款后,我将购买的商品标识符发送到我的服务器以保存新订阅时间(也用于其他平台)。这在沙箱环境中完美工作。

但是,如果我正确理解文章的自动续订订阅是从AppStore内部和我的应用程序内执行的。我现在如何跟踪订阅?

+0

您是否找到解决方案? – pt2ph8 2011-03-09 19:18:20

+0

到目前为止还没有解决方案 – AlexVogel 2011-03-11 07:53:11

+0

警告:请参阅此链接中问题的评论,说明为什么甚至考虑自动续订订阅可能是一个坏主意。 http://stackoverflow.com/questions/7688197/auto-renewing-subscription-differences-to-non-renewing-subscription – Andrew 2012-01-17 20:16:10

回答

0

根据在苹果的in-app-purchase documentation中发现的信息(相当少),我的印象是,无论何时您需要确定用户自动续订订阅的状态,您都可以恢复其交易。

这会导致应用商店将所有自动续订交易发送到您的应用,此时您将处理收据并提供适当的内容。

想必您只需要在用户当前订阅(您可以在本地跟踪)设置为过期时,或者在他们第一次安装应用程序时执行此操作。

3

如果订阅被自动更新,交易将不会通过paymentQueue:updateTransactions方法。更新只发生在商店。

如果你想测试它,你必须要么:

  • 重新验证您的应用程序服务器上的收据,如果你保存收据那里。
  • 重新验证您的iOS客户端上接收

参见:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html#//apple_ref/doc/uid/TP40008267-CH104-SW1

为了避免测试的autorenew每次发射/激活你应该保存认购期endDate来测试更新后。

另见:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/RenewableSubscriptions/RenewableSubscriptions.html#//apple_ref/doc/uid/TP40008267-CH4-SW4

然而,似乎是在沙箱中的错误。订阅有时会得到更新,有时不会。很难测试....

+0

另请参见我的答案http://stackoverflow.com/questions/6526544/storekit-for-ios -subscriptions-question – 2011-10-20 14:46:18

+2

+1 Rene是否正确。您不必'restoreCompletedTransactions'来查明是否发生了自动更新。在您的服务器上,只需将您为该用户存储的*任何*收据发送至App Store进行验证。如果相关的话,他们会用'latest_receipt'或'latest_expired_receipt'做出回应。 – Andrew 2011-12-06 21:07:36