samedi 9 mai 2015

Trying to implement iAd removal but getting "AnyObject is not convertible to..."

I am very new to swift, and I'm getting 5 error messages telling me that AnyObject isn't convertible to various the following: NSString; SKProduct; Set; and SKPaymentTransaction. What does this mean and how do I fix this?

Thanks in advance.

import UIKit
import StoreKit
import AVFoundation
import iAd



class ViewController: UIViewController,SKPaymentTransactionObserver, SKProductsRequestDelegate, ADBannerViewDelegate {

@IBOutlet var adBanner: ADBannerView!

var product: SKProduct!


override func viewDidLoad() {
    super.viewDidLoad()
    self.adBanner.hidden = true
    self.adBanner.delegate = self
    removeAdsButton.hidden = true

    if NSUserDefaults.standardUserDefaults().objectForKey("Ads")  == nil {
        SKPaymentQueue.defaultQueue().addTransactionObserver(self)
        self.getProductInfo();
    }
    if var status: AnyObject! = NSUserDefaults.standardUserDefaults().objectForKey("Ads"){
        if status as NSString == "purchased" {
            self.adBanner.removeFromSuperview()
            self.removeAdsButton.hidden = true;
            self.removeAdsButton.userInteractionEnabled = false
        }
        else{
            SKPaymentQueue.defaultQueue().addTransactionObserver(self)
            self.getProductInfo()
        }
    }


    audioPlayer = AVAudioPlayer(contentsOfURL: evilMusic, error: nil)
    audioPlayer.prepareToPlay()


}

// Hide status bar
override func prefersStatusBarHidden() -> Bool {
    return true
}

@IBOutlet weak var janitor: UIImageView!
@IBOutlet weak var removeAdsButton: UIButton!


var evilMusic = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("C", ofType: "m4a")!)
var audioPlayer = AVAudioPlayer()


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    NSLog("%@",error)
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    self.adBanner.hidden = false
}

func bannerViewWillLoadAd(banner: ADBannerView!) {

}

func bannerViewActionDidFinish(banner: ADBannerView!) {

}

func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
    let products = response.products
    if (products.count != 0)
    {
        product = products[0] as SKProduct
    }
    removeAdsButton.hidden = false
}

func getProductInfo(){
    if (SKPaymentQueue.canMakePayments()){
        let productID:NSSet = NSSet(object: "com.evileye.removeads")
        let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID)
        request.delegate = self
        request.start()
    }
}

func storePurchase(){
    NSUserDefaults.standardUserDefaults().setObject("purchased", forKey:"Ads")
    NSUserDefaults.standardUserDefaults().synchronize()
    self.adBanner.removeFromSuperview()
    self.removeAdsButton.hidden = true
    self.removeAdsButton.enabled = false

}

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!){
    for transaction:AnyObject in transactions {
        if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
            switch trans.transactionState {
            case .Purchased:
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
                self.storePurchase()

                break;
            case .Failed:
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
                break;
            case .Restored:
                SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
                break;
            default:
                break;
            }
        }
    }
}



@IBAction func removeAdsTapped(sender: AnyObject) {
    let payment:SKPayment = SKPayment(product: product);
    SKPaymentQueue.defaultQueue().addPayment(payment);

}

Aucun commentaire:

Enregistrer un commentaire