Swift 如何在ReactJS中添加第二个非消耗性应用内购买?

Swift 如何在ReactJS中添加第二个非消耗性应用内购买?,swift,xcode,in-app-purchase,Swift,Xcode,In App Purchase,*我发现了一个非常有用的关于应用内购买的堆栈溢出链接()。这很有效。我的问题是我不知道如何添加第二个产品。你在哪里买或者。目前,我只能想出一个单一的应用内购买产品。我在网上尝试了几种不同的教程,但都没有成功 strong textvar product_id: String? @IBOutlet weak var adView: UIView! override func viewDidLoad() { super.viewDidLoad() product_id = "co

*我发现了一个非常有用的关于应用内购买的堆栈溢出链接()。这很有效。我的问题是我不知道如何添加第二个产品。你在哪里买或者。目前,我只能想出一个单一的应用内购买产品。我在网上尝试了几种不同的教程,但都没有成功

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;
            }
        }
    }

}
strong textvar product\u id:字符串?
@ibvar-adView:UIView!
重写func viewDidLoad(){
super.viewDidLoad()
product_id=“com.halfmon.removeads.com”
SKPaymentQueue.default().add(self)
//检查是否购买了产品
if(UserDefaults.standard.bool(forKey:“已购买”)){
adView.ishiden=true
}否则{
打印(“应显示广告…”)
}
}
@iAction func unlockAction(发件人:AnyObject){
打印(“即将获取产品…”)
//我可以付款
if(SKPaymentQueue.canMakePayments())
{
让productID:NSSet=NSSet(对象:self.product_id!);
让productsRequest:SKProductsRequest=SKProductsRequest(产品标识符:productID为!集);
productsRequest.delegate=self;
productsRequest.start();
打印(“提取产品”);
}否则{
打印(“无法购买”);
}
}
func buyProduct(产品:SKProduct){
打印(“向苹果发送付款请求”);
let payment=SKPayment(产品:产品)
SKPaymentQueue.default().add(付款);
}
func productsRequest(uRequest:SKProductsRequest,didReceive response:SKProductsResponse){
让计数:Int=response.products.count
如果(计数>0){
让validProduct:SKProduct=response.products[0]作为SKProduct
if(validProduct.productIdentifier==self.product\u id){
打印(validProduct.localizedTitle)
打印(validProduct.localizedDescription)
打印(有效产品价格)
buyProduct(产品:validProduct);
}否则{
打印(validProduct.productIdentifier)
}
}否则{
打印(“无”)
}
}
func请求(请求:SKRequest,DIDFILEWERROR错误:error){
打印(“获取产品信息时出错”);
}
func paymentQueue(queue:SKPaymentQueue,
更新的交易记录:[SKPaymentTransaction])
{
打印(“收到苹果公司的付款交易响应”);
对于事务:事务中的任何对象{
如果让交易:SKPaymentTransaction=交易为?SKPaymentTransaction{
开关trans.transactionState{
案例。购买:
印刷品(“购买的产品”);
SKPaymentQueue.default().finishTransaction(事务为!SKPaymentTransaction)
//处理购买事宜
UserDefaults.standard.set(true,forKey:“已购买”)
adView.ishiden=true
打破
案例。失败:
打印(“购买失败”);
SKPaymentQueue.default().finishTransaction(事务为!SKPaymentTransaction)
打破
案件.恢复:
印刷品(“已购买”);
SKPaymentQueue.default().restoreCompletedTransactions()
//处理购买事宜
UserDefaults.standard.set(true,forKey:“已购买”)
adView.ishiden=true
打破
违约:
打破
}
}
}
}

}

知道哪个线程帮助了你会很有趣,并且在你的问题中包含一个链接可能会很有用。@bad\u coder哦,man完全忘了添加它,我的bad。。