之后恢复自动续订订阅

时间:2017-12-08 20:32:25

标签: ios swift in-app-purchase swiftystorekit

我们正在使用自动续订订阅,除了一个边缘情况外,它可以正常工作。

如果用户将iPhone重置为出厂设置,他们无法在我们的应用中恢复自动续订(或者看起来,我们现在只有两个这样的情况)。

我们正在使用SwiftyStoreKit,但我认为我们方面存在逻辑错误。

现在我们正在以这种方式恢复购买:

func checkOldSubscriptions()->Bool {

     //validator
     let appleValidator = AppleReceiptValidator(service: .production, sharedSecret: ss)

      for i in 0..<products.count {

           //checking every available product in receipt
           SwiftyStoreKit.verifyReceipt(using: appleValidator, completion: { (result) in
               switch result {
                   case .success(let receipt):

                let purchaseResult = SwiftyStoreKit.verifySubscription(
                    type: .autoRenewable, 
                    productId: products[i].name,
                    inReceipt: receipt)

                    switch purchaseResult {
                        case .purchased(let expiresDate):
                        print("Product is valid until \(expiresDate)")

       ...
       }
       }

我的假设是,在重置后我们没有任何收据可以验证,我必须直接检索它。它很难检查设备,因为老实说,我没有一个真正的测试设备,很容易为我杀死。

所以我想添加类似的内容(在尝试验证之前手动刷新收据):

SwiftyStoreKit.verifyReceipt(using: appleValidator, forceRefresh: true) { result in
    switch result {
    case .success(let receipt):

它有意义吗?它有帮助吗?

1 个答案:

答案 0 :(得分:1)

你是对的。重置后收据可能不可用。 您需要在SKPaymentQueue上调用restoreCompletedTransactions()来检索之前标记为已完成的任何事务。

由于您使用的是SwiftyStoreKit,因此可以使用SwiftyStoreKit.restorePurchases。查看文档以获取详细信息。