gpt4 book ai didi

具有 InAppPurchase 和 2 个目标的 iOS 应用程序

转载 作者:行者123 更新时间:2023-11-30 11:23:05 25 4
gpt4 key购买 nike

我已经使用 IAP 创建了一个应用程序(只有一个非消耗品),并制定了试用版和完整目标。到目前为止一切都很好(我认为)。如果我使用模拟器启动试用版或完整版,则一切都可以工作,甚至是 IAP 方法。但问题是:当用户购买完整版后如何更改目标?在 Xcode 中,我可以选择并启动我想要的版本(目标),但如何确定起始目标是试用版本而不是完整版本?我在 Xcode 中添加了 Swift Flag,但也许我误解了它的操作。我必须重新开始吗?

最佳答案

func startBuyingProducts() {
let purchaseRequest = SKProductsRequest(productIdentifiers: Set<String>(arrayLiteral:productID))
purchaseRequest.delegate = self
purchaseRequest.start()
}

// SKPridcutsRequestDelegate method
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
if let product = response.products.first {
if SKPaymentQueue.canMakePayments() {
let payment = SKPayment(product: product)
SKPaymentQueue.default().add(self)
SKPaymentQueue.default().add(payment)
}
}


//implement method of SKPaymentTransactionObserver
//trigger the unlock feature method when the purchase succeed and the receipt return is verified through apple
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased:
if let receiptURL = Bundle.main.appStoreReceiptURL {
let request = URLSession.shared.dataTask(with: receiptURL, completionHandler: { (data, response, error) in
let receiptJSON = data?.base64EncodedString(options: Data.Base64EncodingOptions.init(rawValue: 0))

//verify the receipt throught apple, or sending the verification throught your own server
var request = URLRequest(url: URL(string:"https://sandbox.itunes.apple.com/verifyReceipt")!)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = receiptJSON?.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in
// unlock the feature here
})
})
}
SKPaymentQueue.default().finishTransaction(transaction)
break
case .failed:
SKPaymentQueue.default().finishTransaction(transaction)
break
case .deferred:
break
case .purchasing:
break
case .restored: break
}
}
}

只需要一个目标。

关于具有 InAppPurchase 和 2 个目标的 iOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51072809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com