Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 恢复购买功能-Swift_Ios_Swift_In App Purchase - Fatal编程技术网

Ios 恢复购买功能-Swift

Ios 恢复购买功能-Swift,ios,swift,in-app-purchase,Ios,Swift,In App Purchase,在我的应用程序中,用户可以进行两种不同的购买 以下是我的paymentQueue函数: func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { print("Received Payment Transaction Response from Apple") for transaction:AnyObject in transacti

在我的应用程序中,用户可以进行两种不同的购买

以下是我的paymentQueue函数:

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, . Restored:
                print("Product Purchased / Restored")
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)

                // TO DO
                if selectedProduct == "product1" {
                    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product1Purchased")
                } else if selectedProduct == "product2" {
                    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product2Purchased")
                }
            case .Failed:
                print("Purchased Failed")
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
                break
            default:
                break
            }
        }
    }
}
我创建了一个名为
selectedProduct
的变量来检测用户选择的产品。如果他点击按钮购买第一个产品,变量
selectedProduct
将保留值“product1”

问题是,当用户单击“恢复购买”按钮时,应用程序会检查所选产品是“product1”还是“product2”,但如果用户单击“恢复购买”按钮,则
selectedProduct
没有值,因此不会发生任何情况


我该怎么办?

请不要使用变量(如
selectedProduct
)来确定购买或还原了哪个产品。查看
SKPaymentTransaction
中所需的信息

        case .Purchased, . Restored:
            print("Product Purchased / Restored")
            SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)

            if trans.payment.productIdentifier == "product1" {
                NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product1Purchased")
            } else if trans.payment.productIdentifier == "product2" {
                NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product2Purchased")
            }

根据实际产品ID的需要进行调整。

您不应使用
selectedProduct
查看购买或恢复的产品。查看交易内部,了解购买或选择的内容。感谢您的快速回答!“交易”是什么意思?你的
交易
变量(实际上是你的
交易
变量)。