大佬教程收集整理的这篇文章主要介绍了ios – productsRequest不适合快速进行应用程序内购买,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
override func viewDidLoad() { super.viewDidLoad() outRemoveAds.enabled = false if(SKPaymentQueue.canMakePayments()) { println("IAP is enabled,loading") var productID:NSSet = NSSet(objects: "com.webstart.tomsgamesinc.StartLight_No_Ads") var request: SKProductsrequest = SKProductsrequest(productIdentifiers: productID as Set<NSObject>) request.delegate = self request.start() } else { println("please enable IAPS") } // Do any additional setup after loading the view. } func buyProduct() { println("buy " + p.productIdentifier) var pay = SKPayment(product: p) SKPaymentQueue.defaultQueue().addtransactionObserver(self) SKPaymentQueue.defaultQueue().addPayment(pay as SKPayment) } //3 func productsrequest(request: SKProductsrequest!,didReceiveResponse response: SKProductsResponse!) { println("product request") println(response.products) var myProduct = response.products for product in myProduct { println("product added") println(product.productIdentifier) println(product.localizedtitlE) println(product.localizedDescription) println(product.pricE) list.append(product as! SKProduct) } outRemoveAds.enabled = true } // 4 func paymentQueueRestoreCompletedtransactionsFinished(queue: SKPaymentQueue!) { println("transactions restored") var purchasedItemIDS = [] for transaction in queue.transactions { var t: SKPaymenttransaction = transaction as! SKPaymenttransaction let prodID = t.payment.productIdentifier as String switch prodID { case "com.webstart.tomsgamesinc.StartLight_No_Ads": println("remove ads") removeAds() default: println("IAP not setup") } } } // 5 func paymentQueue(queue: SKPaymentQueue!,updatedtransactions transactions: [AnyObject]!) { println("add paymnet") for transaction:AnyObject in transactions { var trans = transaction as! SKPaymenttransaction println(trans.error) switch trans.transactionState { case .Purchased: println("buy,ok unlock iap here") println(p.productIdentifier) let prodID = p.productIdentifier as String switch prodID { case "com.webstart.tomsgamesinc.StartLight_No_Ads": println("remove ads") removeAds() println("add coins to account") default: println("IAP not setup") } queue.finishtransaction(trans) break; case .Failed: println("buy error") queue.finishtransaction(trans) break; default: println("default") break; } } } // 6 func finishtransaction(trans:SKPaymenttransaction) { println("finish trans") SKPaymentQueue.defaultQueue().finishtransaction(trans) } //7 func paymentQueue(queue: SKPaymentQueue!,removedtransactions transactions: [AnyObject]!) { println("remove trans"); } @IBACtion func btnRemoveAds(sender: UIButton) { for product in list { println("ProdID") var prodID = product.productIdentifier println(prodID) if(prodID == "com.webstart.tomsgamesinc.StartLight_No_Ads") { p = product buyProduct() break; } } }
import UIKit import StoreKit class ViewController: UIViewController,SKProductsrequestDelegate,SKPaymenttransactionObserver { var productID = "com.webstart.tomsgamesinc.StartLight_No_Ads" var product: SKProduct? var isProductRecive = false override func viewDidLoad() { super.viewDidLoad() getProducTinfo() SKPaymentQueue.defaultQueue().addtransactionObserver(self) } @IBACtion func btnRemoveAds(sender: UIButton) { if isProductRecive{ let payment = SKPayment(product: product) SKPaymentQueue.defaultQueue().addPayment(payment) }else{ let alert = UIAlertView() alert.title = "Alert" alert.message = "Retriving product please wait." alert.addButtonWithtitle("Ok") alert.show() getProducTinfo() } } func getProducTinfo() { if SKPaymentQueue.canMakePayments() { let request = SKProductsrequest(productIdentifiers: NSSet(objects: self.productID) as Set<NSObject>) request.delegate = self request.start() } else { let alert = UIAlertView() alert.title = "Alert" alert.message = "Please enable In App Purchase in SetTings." alert.addButtonWithtitle("Ok") alert.show() } } //3 func productsrequest(request: SKProductsrequest!,didReceiveResponse response: SKProductsResponse!) { var products = response.products if (products.count != 0) { product = products[0] as? SKProduct self.isProductRecive = true println(product) } else { let alert = UIAlertView() alert.title = "Alert" alert.message = "Product not found" alert.addButtonWithtitle("Ok") alert.show() } products = response.invalidProductIdentifiers for product in products { println("Product not found: \(product)") } } // 4 func paymentQueueRestoreCompletedtransactionsFinished(queue: SKPaymentQueue!) { println("transactions restored") var purchasedItemIDS = [] for transaction in queue.transactions { var t: SKPaymenttransaction = transaction as! SKPaymenttransaction let prodID = t.payment.productIdentifier as String switch prodID { case "com.webstart.tomsgamesinc.StartLight_No_Ads": println("remove ads") default: println("IAP not setup") } } } // 5 func paymentQueue(queue: SKPaymentQueue!,updatedtransactions transactions: [AnyObject]!) { for transaction in transactions as! [SKPaymenttransaction] { switch transaction.transactionState { case .Restored: SKPaymentQueue.defaultQueue().finishtransaction(transaction) case .Purchased: SKPaymentQueue.defaultQueue().finishtransaction(transaction) case .Failed: SKPaymentQueue.defaultQueue().finishtransaction(transaction) default: break } } } func request(request: SKrequest!,didFailWithError error: NSError!) { println("There was an error"); } }
它与我的应用程序包ID产品ID工作正常,所以请检查iTunes连接问题应该在那里.
以上是大佬教程为你收集整理的ios – productsRequest不适合快速进行应用程序内购买全部内容,希望文章能够帮你解决ios – productsRequest不适合快速进行应用程序内购买所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。