代码之家  ›  专栏  ›  技术社区  ›  lithium

在之后恢复自动续订订阅

  •  1
  • lithium  · 技术社区  · 7 年前

    我们使用的是自动续费订阅,除了one edge的情况外,其他情况都正常。

    如果用户将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 回复  |  直到 7 年前
        1
  •  1
  •   Ken Boreham    7 年前

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

    因为您使用的是SwiftyStoreKit,所以可以使用SwiftyStoreKit。恢复采购。查看文档了解详细信息。