首页 > 解决方案 > 如何在 ReactJS 中添加第二个非消耗性应用购买?

问题描述

*我发现了一个关于应用内购买的超级有用的堆栈溢出链接(Swift IOS 9 - 以最简单的方式实现应用内购买)。这很好用。我的问题我不知道如何向其中添加第二个产品。你在哪里买或者。目前我只能弄清楚做一个单一的应用内购买产品。我在网上尝试了许多不同的教程,但没有成功。

strong textvar product_id: String?
@IBOutlet weak var adView: UIView!

override func viewDidLoad() {
    super.viewDidLoad()

    product_id = "com.halfmoon.removeads.com"

    SKPaymentQueue.default().add(self)

    //Check if product is purchased
    if (UserDefaults.standard.bool(forKey: "purchased")){
        adView.isHidden = true

    } else {
        print("Should show ads...")
    }

}


@IBAction func unlockAction(sender: AnyObject) {

   print("About to fetch the product...")

            // Can make payments
            if (SKPaymentQueue.canMakePayments())
            {
                let productID:NSSet = NSSet(object: self.product_id!);
                let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>);
                productsRequest.delegate = self;
                productsRequest.start();
                print("Fetching Products");
            }else{
                print("Can't make purchases");
            }

}



func buyProduct(product: SKProduct){
    print("Sending the Payment Request to Apple");
    let payment = SKPayment(product: product)
    SKPaymentQueue.default().add(payment);

}



func productsRequest (_ request: SKProductsRequest, didReceive response: SKProductsResponse) {

    let count : Int = response.products.count
    if (count>0) {
        let validProduct: SKProduct = response.products[0] as SKProduct
        if (validProduct.productIdentifier == self.product_id) {
            print(validProduct.localizedTitle)
            print(validProduct.localizedDescription)
            print(validProduct.price)
            buyProduct(product: validProduct);
        } else {
            print(validProduct.productIdentifier)
        }
    } else {
        print("nothing")
    }
}


func request(_ request: SKRequest, didFailWithError error: Error) {
    print("Error Fetching product information");
}

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:
                print("Product Purchased");
                SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
                // Handle the purchase
                UserDefaults.standard.set(true , forKey: "purchased")
                adView.isHidden = true
                break;
            case .failed:
                print("Purchased Failed");
                SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
                break;



            case .restored:
                print("Already Purchased");
                SKPaymentQueue.default().restoreCompletedTransactions()


                // Handle the purchase
                UserDefaults.standard.set(true , forKey: "purchased")
                adView.isHidden = true
                break;
            default:
                break;
            }
        }
    }

}

}

标签: swiftxcodein-app-purchase

解决方案


推荐阅读