При покупке приложения в SKScene с использованием SpriteNode?

Я использую этот код, чтобы разблокировать сцену после совершения покупки. Мой первый вопрос, правильный ли код в том, что покупка будет работать. Мой второй вопрос заключается в том, что я прошу, чтобы покупка происходила при нажатии узла спрайта, вызываю ли я правильную функцию, чтобы она происходила при касаниях? Весь приведенный ниже код находится в SKScene.

    var list = [SKProduct]()
    var p = SKProduct()

override func didMoveToView(view: SKView) {

    if(SKPaymentQueue.canMakePayments()) {
        println("IAP is enabled, loading")
        var productID:NSSet = NSSet(objects: "_Scene1_Unlock")
        var request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>)
        request.delegate = self
        request.start() } else {
        println("please enable IAPS") }
}


    func addScene1() {
        println("scene1 added") }

    func RestorePurchases() {
        SKPaymentQueue.defaultQueue().addTransactionObserver(self)
        SKPaymentQueue.defaultQueue().restoreCompletedTransactions() }

    func btnAddScene1() {
        for product in list {
            var prodID = product.productIdentifier
            if(prodID == "_Scene1_Unlock") {
                p = product
                buyProduct()
                break; } } }

    func buyProduct() {
        println("buy" + p.productIdentifier)
        var pay = SKPayment(product: p)
        SKPaymentQueue.defaultQueue().addTransactionObserver(self)
        SKPaymentQueue.defaultQueue().addPayment(pay as SKPayment) }

    func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
        println("product request")
        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) } }

    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 "_Scene1_Unlock":
                println("remove ads")
                addScene1()
            default:
                println("IAP not setup")}}}

    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 "_Scene1_Unlock":
        println("remove ads")
        addScene1()
        default:
        println("IAP not setup") }
        queue.finishTransaction(trans)
        break;
        case .Failed:
        println("buy error")
        queue.finishTransaction(trans)
        break;
        default:
        println("default")
        break; }}}

    func finishTransaction(trans:SKPaymentTransaction) {
        println("finish trans") }

    func paymentQueue(queue: SKPaymentQueue!, removedTransactions transactions: [AnyObject]!) {
        println("remove trans") }


    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        for touch in (touches as! Set<UITouch>) {
            let location = touch.locationInNode(self)

            if self.nodeAtPoint(location) == self.stopScene1 {
            btnAddScene1()
            }

person JGrn84    schedule 09.08.2015    source источник
comment
Судя по тому, что я вижу, выглядит неплохо. Вчера я ответил на такой же вопрос, если хотите посмотреть, вот ссылка. ссылка на покупку приложения   -  person Aidan Kaiser    schedule 10.08.2015