恢复应用内购买Swift

我在应用程序中添加了非消费型应用程序内购买广告。 采购工作正常,其恢复工作有困难。 我只是不知道该怎么做。

这是我的购买代码:

func buyNonConsumable(){ println("About to fetch the products"); // We check that we are allow to make the purchase. if (SKPaymentQueue.canMakePayments()) { var productID:NSSet = NSSet(object: self.product_id!); var productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID); productsRequest.delegate = self; productsRequest.start(); println("Fething Products"); }else{ println("can't make purchases"); } } // Helper Methods func buyProduct(product: SKProduct){ println("Sending the Payment Request to Apple"); var payment = SKPayment(product: product) SKPaymentQueue.defaultQueue().addPayment(payment); } func removeTheAds(){ userDefaults.setBool(true, forKey: "proUser") userDefaults.synchronize() print("You are a pro User") //Code for removing the ads currently } // Delegate Methods for IAP func productsRequest (request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) { println("got the request from Apple") var count : Int = response.products.count if (count>0) { var validProducts = response.products var validProduct: SKProduct = response.products[0] as SKProduct if (validProduct.productIdentifier == self.product_id) { println(validProduct.localizedTitle) println(validProduct.localizedDescription) println(validProduct.price) buyProduct(validProduct); } else { println(validProduct.productIdentifier) } } else { println("no product found") } } func request(request: SKRequest!, didFailWithError error: NSError!) { println("There was an error"); } func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) { println("Received Payment Transaction Response from Apple"); for transaction:AnyObject in transactions { if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{ switch trans.transactionState { case .Purchased: println("Product Purchased"); SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction) removeTheAds() break; case .Failed: println("Purchased Failed"); SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction) break; // case .Restored: default: SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction) break; } } } } 

我如何处理恢复? 我有一个恢复button,调用这两个,但我现在做什么?

  SKPaymentQueue.defaultQueue().addTransactionObserver(self) SKPaymentQueue.defaultQueue().restoreCompletedTransactions() 

我看到这种情况.Restored被注释掉了,但我不知道里面发生了什么。 任何帮助将非常感激。

付款被恢复时,您所做的是由您决定的。 我在我的应用程序中执行的操作与在购买的情况下执行的操作是一样的 – 我打开隐藏的function。 它看起来像在你的应用程序,你会closures广告。 事实上,在我的应用程序中,购买和.Restored是相同的情况,你也可以做同样的事情。 这是我的一些代码:

  switch t.transactionState { case .Purchased, .Restored: // ... turn on the magic ... }