我用IAP(只有一个非消耗品)创建了一个应用,并进行了试用和完整目标。到目前为止,一切正常(我认为)。 如果我使用模拟器启动了试用版或完整版,那么即使是IAP方法也可以使用。但是问题是:当用户购买完整版时,如何更改目标? 在Xcode中,我可以选择并启动所需的版本(目标),但是如何确定起始目标是试用版而不是完整版? 我在Xcode中添加了Swift Flag,但是也许我误解了它的操作。 我必须重新开始吗?
答案 0 :(得分:0)
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
}
}
}
只需要一个目标。