我在Apple文档中读到,StoreKit不会自行恢复订阅。我需要自己处理这个,而不是将交易数据存储在我的服务器上。那很好,但是我可以将这张收据与一个UDID(购买它的那个)相关联,还是会让我被拒绝?
如果这不是正确的方法,我将如何处理这个以支持多个设备? (因为它们没有相同的UDID)
答案 0 :(得分:0)
如果订阅已自动更新,则交易将不会传递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以测试之后的续订。
另见:
使用restoreTransactions方法可以获取登录的Aplle-ID的所有事务。搜索与您的产品关联的交易,并验证收据是否可能续订。如果找不到任何交易,则用户尚未在任何设备上购买。
但是,沙盒中似乎存在错误。订阅有时会更新,有时不会。很难测试......
答案 1 :(得分:-1)
您不必在服务器上存储交易数据。您可以使用-[SKPaymentQueue restoreCompletedTransactions]
启动还原以前的购买交易。