通过购买和恢复删除广告 - Swift

时间:2015-08-15 20:05:55

标签: ios swift restore

在xcode 6和swift中工作,我正在尝试通过应用内购买来移除广告。购买似乎有效,但恢复不是那么多。我有点工作,但它没有更新控制器。

在每个viewcontroller中,我都有以下内容来展示广告并检查是否已购买以隐藏:

我有一个横幅的@IBOutlet:

@IBOutlet weak var topAdBanner: ADBannerView!

以及以下代码:

override func viewDidLoad() {
    super.viewDidLoad()
    if NSUserDefaults.standardUserDefaults().boolForKey("purchased") ==
        true || purchased == true {
        self.topAdBanner.hidden = true
} else {
var topAdBanner: ADBannerView
self.topAdBanner.hidden = true
self.topAdBanner.delegate = self
}

然后在我的menuviewcontroler上,这是我的代码,这就是我的问题所在。该应用程序已本地化为几种语言,因此额外的本地化代码:

import UIKit
import StoreKit

class MenuViewController: UIViewController, SKProductsRequestDelegate,
SKPaymentTransactionObserver {

var product_id: NSString?;

@IBOutlet weak var descriptionText: UILabel!
@IBOutlet weak var purchaseButton: UIButton!
@IBOutlet weak var purchaseLabel: UILabel!
@IBOutlet weak var restoreButton: UIButton!
@IBOutlet weak var restoreLabel: UILabel!
@IBOutlet weak var cancelButton: UIButton!

override func viewDidLoad() {

    super.viewDidLoad()
    product_id = "app.removeads";
    self.descriptionText.text =
       NSLocalizedString("REMOVE_ADS_DESCRIPTION", comment:
       "REMOVE_ADS_DESCRIPTION")
    SKPaymentQueue.defaultQueue().addTransactionObserver(self)
}

func buyNonConsumable(){
    if (SKPaymentQueue.canMakePayments())
    {
        var productID:NSSet = NSSet(object: self.product_id!);
        var productsRequest:SKProductsRequest = SKProductsRequest
       (productIdentifiers: productID as Set<NSObject>);
       productsRequest.delegate = self;
       productsRequest.start();
       self.descriptionText.text = NSLocalizedString(     
           "FIRST_PROCESSING", comment: "first_processing")
}else{
self.descriptionText.text = NSLocalizedString("PAYMENT_DISABELD",
    comment: "PAYMENT_DISABELD")
}

}

// Helper Methods

func buyProduct(product: SKProduct){
    self.descriptionText.text = NSLocalizedString("SECOND_PROCESSING",
        comment: "second_processing")
var payment = SKPayment(product: product)
SKPaymentQueue.defaultQueue().addPayment(payment)
}

// Delegate Methods for IAP
func productsRequest (request: SKProductsRequest, didReceiveResponse
    response: SKProductsResponse) {
    self.descriptionText.text = NSLocalizedString("THIRD_PROCESSING",
        comment: "third_processing")
    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 + "Fehler")
        }
    } else {
    }
}

@IBAction func purchaseButton(sender: AnyObject) {
    buyNonConsumable()
}

@IBAction func restoreButton(sender: AnyObject) {
    SKPaymentQueue.defaultQueue().addTransactionObserver(self)
    SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
    self.descriptionText.text = NSLocalizedString("FIRST_PROCESSING",
        comment: "first_processing")
}

func paymentQueueRestoreCompletedTransactionsFinished(queue:
    SKPaymentQueue!) {

    println("Transactions Being Restored")

var purchasedItemIDS = []
for transaction:SKPaymentTransaction in queue.transactions as!
    [SKPaymentTransaction] {
    if transaction.payment.productIdentifier == self.product_id
    {
        println("Product Already Purchased")
        // Unlock Feature
        self.descriptionText.text =
        NSLocalizedString("UNLOCKED_LABEL", comment: "unlocked")
        purchased = true
        NSUserDefaults.standardUserDefaults().setBool(true, forKey:
            "purchased")
        NSUserDefaults.standardUserDefaults().synchronize()
        SKPaymentQueue.defaultQueue().finishTransaction(
            transaction)
        }
    }

var alert = UIAlertView(title: "Thank You", message: "Your purchase
    was restored. Go back to main screen", delegate: nil,
    cancelButtonTitle: "OK")
alert.show()
}

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions
    transactions: [AnyObject]!) {
    for transaction in transactions as! [SKPaymentTransaction] {
        switch transaction.transactionState {
        case SKPaymentTransactionState.Purchased:
            if (transaction.downloads != nil) {
                SKPaymentQueue.defaultQueue().startDownloads(
                    transaction.downloads)
            } else {
                // Unlock feature or content here before
                // finishing transaction
                self.descriptionText.text =
                    NSLocalizedString("UNLOCKED_LABEL", comment:
                    "unlocked")
                purchased = true
                NSUserDefaults.standardUserDefaults().setBool(true,
                    forKey: "purchased")
                NSUserDefaults.standardUserDefaults().synchronize()
                SKPaymentQueue.defaultQueue().finishTransaction(
                    transaction)
            }

        case SKPaymentTransactionState.Restored:
                println("Restored")
                self.descriptionText.text =
                    NSLocalizedString("RESTORED_LABEL", comment:      
                        "restored")
                purchased = true
                NSUserDefaults.standardUserDefaults().setBool(true,    
                    forKey:"purchased")
                NSUserDefaults.standardUserDefaults().synchronize()
                break
        case SKPaymentTransactionState.Failed:
                self.descriptionText.text = NSLocalizedString(
                    "ERROR_HEADER",comment: "error")
                SKPaymentQueue.defaultQueue().finishTransaction(
                    transaction)
        default:
                break
        }
    }
}
}

购买该应用程序。已经过测试,它会移除广告。 然而,恢复找到产品并说成功恢复,但添加不会消失。

我似乎遇到的另一个问题是,当我加载具有购买和恢复选项的页面时,它会在页面加载时立即询问您的itunes应用商店登录而不按任何内容。我不确定它是否与我的代码有关。

我花了一整天时间试图解决这个问题,并通过论坛和帖子查看,但我似乎无法解决它。任何帮助将不胜感激。

0 个答案:

没有答案