Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class RemoveAds: UIViewController , SKProductsRequestDelegate, SKPaymentTransactionObserver {
- var product_id: String?
- override func viewDidLoad() {
- product_id = "ads product id"
- super.viewDidLoad()
- SKPaymentQueue.default().add(self)
- //Check if product is purchased
- if (UserDefaults.standard.bool(forKey: "purchased")){
- // Hide ads
- //adView.hidden = true
- // removeAds ();
- } else {
- print("Should show ads...")
- }
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- func buyProduct(product: SKProduct){
- print("Sending the Payment Request to Apple");
- let payment = SKPayment(product: product)
- SKPaymentQueue.default().add(payment);
- }
- func productsRequest (_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
- let count : Int = response.products.count
- if (count>0) {
- let validProduct: SKProduct = response.products[0] as SKProduct
- if (validProduct.productIdentifier == self.product_id) {
- print(validProduct.localizedTitle)
- print(validProduct.localizedDescription)
- print(validProduct.price)
- buyProduct(product: validProduct);
- } else {
- PublicMethod.hideHUD(view: self)
- print(validProduct.productIdentifier)
- //self.view.makeToast("Error Fetching product information")
- }
- } else {
- PublicMethod.hideHUD(view: self)
- print("nothing")
- self.view.makeToast("Error Fetching product information")
- }
- }
- func request(_ request: SKRequest, didFailWithError error: Error) {
- print("Error Fetching product information");
- PublicMethod.hideHUD(view: self)
- self.view.makeToast("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:
- PublicMethod.hideHUD(view: self)
- print("Product Purchased");
- self.view.makeToast("Product Purchased")
- SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
- // Handle the purchase
- UserDefaults.standard.set(true , forKey: "purchased")
- self.present(Utilities().showAlertContrller(title: "Purchase Success", message: "You've successfully purchased"), animated: true, completion: nil)
- // removeAds ();
- //adView.hidden = true
- break;
- case .failed:
- PublicMethod.hideHUD(view: self)
- self.view.makeToast("Purchased Failed")
- print("Purchased Failed");
- SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
- self.present(Utilities().showAlertContrller(title: "Purchase failed!", message: trans.error!.localizedDescription), animated: true, completion: nil)
- break;
- case .restored:
- PublicMethod.hideHUD(view: self)
- self.view.makeToast("Already Purchased")
- print("Already Purchased");
- SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
- // Handle the purchase
- UserDefaults.standard.set(true , forKey: "purchased")
- self.present(Utilities().showAlertContrller(title: "Restore Success", message: "You've successfully restored your purchase!"), animated: true, completion: nil)
- //removeAds ();
- //adView.hidden = true
- break;
- default:
- PublicMethod.hideHUD(view: self)
- break;
- }
- }
- }
- }
- // MARK: - Restore In App Purchase
- @IBAction func restoreAction(_ sender: UIButton) {
- if (SKPaymentQueue.canMakePayments()) {
- PublicMethod.showHud(text: "Restoring...", view: self)
- SKPaymentQueue.default().add(self)
- SKPaymentQueue.default().restoreCompletedTransactions()
- } else {
- // show error
- PublicMethod.hideHUD(view: self)
- self.view.makeToast("Can't make payment")
- UIAlertView(title: "Notice", message: "Can't make purchases", delegate: nil, cancelButtonTitle: "OK").show()
- }
- }
- // MARK: - Restore In App Purchase
- @IBAction func removeAds(_ sender: UIButton) {
- print("About to fetch the product...")
- PublicMethod.showHud(text: "Purchasing...", view: self)
- // Can make payments
- if (SKPaymentQueue.canMakePayments())
- {
- let productID:NSSet = NSSet(object: self.product_id!);
- let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>);
- productsRequest.delegate = self;
- productsRequest.start();
- print("Fetching Products");
- self.view.makeToast("Purchasing Products")
- }else{
- PublicMethod.hideHUD(view: self)
- print("Can't make purchases");
- self.view.makeToast("Can't make purchases")
- UIAlertView(title: "Notice", message: "Can't make purchases", delegate: nil, cancelButtonTitle: "OK").show()
- }
- }
- func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
- PublicMethod.hideHUD(view: self)
- // TODO: Product is restored and make sure the functionality/availability of purchased product
- // Handle the purchase
- print("received restored transactions: %i", queue.transactions.count);
- if(queue.transactions.count > 0){
- let productIdentifiers = NSSet(array: [product_id])
- let productRequest = SKProductsRequest(productIdentifiers: productIdentifiers as! Set<String>)
- productRequest.delegate = self
- productRequest.start()
- }else{
- UIAlertView(title: "Notice", message: "You don't buy. Please buy for remove ads", delegate: nil, cancelButtonTitle: "OK").show()
- }
- //
- // PublicMethod.hideHUD(view: self)
- //
- // UserDefaults.standard.set(true , forKey: "purchased")
- //
- // self.present(Utilities().showAlertContrller(title: "Restore Success", message: "You've successfully restored your purchase!"), animated: true, completion: nil)
- }
- //If an error occurs, the code will go to this function
- func paymentQueue(_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error) {
- //Handle Error
- PublicMethod.hideHUD(view: self)
- self.present(Utilities().showAlertContrller(title: "Restore Failed", message: "You've failed to restore your purchase!"), animated: true, completion: nil)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement