我想一个IAP收据传递给包含用户,并想检查是否有用户completion handler
是目前在其他一些subscription
我得到调用此活动的一个class
。我怎样才能解决这个问题。
不能调用非功能型的价值“((学生) - >无效)?”
func validateReceipt(pReceiptData: Data? = nil, completion pCompletion: ((Student) -> Void)? = nil) {
let receiptData = pReceiptData!.base64EncodedString()
let receiptDict: [String: Any] = ["receipt-data": receiptData]
do {
let data = try JSONSerialization.data(withJSONObject: receiptDict)
guard let validationUrl = URL(string: "https://us-central1-myApp-a8e27.cloudfunctions.net/receiptValidation") else { return }
let session = URLSession(configuration: .default)
var request = URLRequest(url: validationUrl, cachePolicy: .reloadIgnoringLocalCacheData)
request.httpMethod = "POST"
request.httpBody = data
let task = session.uploadTask(with:request, from: data) { (data, response, error) in
guard let data = data, error == nil else { return }
do {
let receipt = try IAPReceipt.decode(data: data)
pCompletion(receipt)
} catch let error {
print(error.localizedDescription)
}
}
task.resume()
} catch let error {
print(error)
}
}
你可以利用typealias
,使您的函数声明有点清洁。看一看在完成块是怎么做的。
typealias Completion = ((_ student: Student) -> Void)?
func validateReceipt(pReceiptData: Data? = nil, completion: Completion = nil) {
...
}