Swift IOS 9 – 以最简单的方式实现应用内购买
我正在尝试在我的应用中实施单个应用内购买以移除广告,从iTunes Connect方面非常容易,但对于代码部分,我只找到带有tableview和/或旧版
swift或objC的教程
我在应用程序的新版本中添加了iTunes Connect中的应用程序内购买,在应用程序中我添加了一个带有2个按钮的视图,一个用于购买,另一个用于恢复以前的购买,但我不知道代码,因为现在我的viewcontroller的inapp部分是 import StoreKit var productIDs: Array<String!> = [] var productsArray: Array<SKProduct!> = [] class ViewController: UIViewController,SKProductsRequestDelegate { 这样可以吗?如果我只有一个应用内购买,我是否需要阵列? 我还在功能部分添加了应用程序内购买,但我在标签“添加应用程序购买权利到您的应用程序ID”旁边有红色感叹号,但我看到了游戏中心部分和排行榜和成就的相同内容工作所以我认为我不必担心它 关于删除添加,这是最好的方法吗? 我使用admob,我想在Appdelegate中添加一个if语句,并在其中添加create和load interstital部分 提前感谢您的回答 解决方法
以下适用于Swift 2.
首先,在Itunes Connect中进行IAP 导入Storekit import StoreKit 添加StoreKit代理 class ViewController: UIViewController,SKProductsRequestDelegate,SKPaymentTransactionObserver { 声明您的产品ID var product_id: NSString? override func viewDidLoad() { product_id = "YOUR_PRODUCT_ID" super.viewDidLoad() SKPaymentQueue.defaultQueue().addTransactionObserver(self) //Check if product is purchased if (NSUserDefaults.standardUserDefaults().boolForKey("purchased")){ // Hide ads adView.hidden = true } else { print("Should show ads...") } } 解锁内容:这是按钮操作,将初始化购买 @IBAction func unlockAction(sender: AnyObject) { print("About to fetch the product...") // Can make payments if (SKPaymentQueue.canMakePayments()) { let productID:NSSet = NSSet(object: self.product_id!); let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID); productsRequest.delegate = self; productsRequest.start(); println("Fetching Products"); }else{ print("Can't make purchases"); } } 助手方法 func buyProduct(product: SKProduct){ println("Sending the Payment Request to Apple"); let payment = SKPayment(product: product) SKPaymentQueue.defaultQueue().addPayment(payment); } IAP的代表方法 func productsRequest (request: SKProductsRequest,didReceiveResponse response: SKProductsResponse) { let count : Int = response.products.count if (count>0) { var validProduct: SKProduct = response.products[0] as SKProduct if (validProduct.productIdentifier == self.product_id) { print(validProduct.localizedTitle) print(validProduct.localizedDescription) print(validProduct.price) buyProduct(validProduct); } else { print(validProduct.productIdentifier) } } else { print("nothing") } } func request(request: SKRequest!,didFailWithError error: NSError!) { print("Error Fetching product information"); } func paymentQueue(_ queue: SKPaymentQueue,updatedTransactions transactions: [SKPaymentTransaction]) { print("Received Payment Transaction Response from Apple"); for transaction:AnyObject in transactions { if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{ switch trans.transactionState { case .Purchased: print("Product Purchased"); SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction) // Handle the purchase NSUserDefaults.standardUserDefaults().setBool(true,forKey: "purchased") adView.hidden = true break; case .Failed: print("Purchased Failed"); SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction) break; case .Restored: print("Already Purchased"); SKPaymentQueue.defaultQueue().restoreCompletedTransactions() // Handle the purchase NSUserDefaults.standardUserDefaults().setBool(true,forKey: "purchased") adView.hidden = true break; default: break; } } } } 恢复购买 将此添加到函数: if (SKPaymentQueue.canMakePayments()) { SKPaymentQueue.defaultQueue().restoreCompletedTransactions() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |