在App Purchase中多次显示Swift

时间:2015-03-24 17:37:15

标签: ios swift in-app-purchase

我有一个TableViewController,在viewDidLoad中,我正在请求所有可用的产品,然后重新加载tableview,单元格数=产品数量。
发生的事情是当我点击“购买按钮”并取消它时,它只打印一次“购买已取消” 但是当我转到其他视图控制器并再次返回此tablevc时(因为我再次打开此tableVC再次加载ViewDidLoad)正确加载了单元格。但是当我尝试购买并再次点击取消时。它打印“买取已取消”两次。
如果我转到其他视图并再次打开此vc。然后它打印三次....这继续。
这是我的viewDidLoad

    if (SKPaymentQueue.canMakePayments()) {
        var productIDs:NSSet = NSSet(objects: productOne, productTwo, productThree, productFour, productFive)
        var productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productIDs)
        productsRequest.delegate = self;
        productsRequest.start();
    }else{
        println("can't make purchases");
    }

并委托方法

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
    println("add paymnet")

    for transaction:AnyObject in transactions {
        var trans = transaction as SKPaymentTransaction


        switch trans.transactionState {

        case .Purchased:
            println("Purchase Successful")
            SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
            queue.finishTransaction(trans)
            break;
        case .Failed:
            println("Buy Cancelled")
            SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
            queue.finishTransaction(trans)
            break;
        default:
            println("default")
            break;

        }
    }
}

0 个答案:

没有答案