我正在遵循一个实现应用内购买的教程,https://www.youtube.com/watch?v=dwPFtwDJ7tc&t=1170s,当我尝试编写它时,有一行代码与教程不同。
视频说要把这行代码写成:
SwiftyStoreKit.verifyReceipt(password: sharedSecret, completion: {(more code added here)})然而,当我写出它时,出现的唯一选项涉及到另一个部分,这就是“使用:”
SwiftyStoreKit.verifyReceipt(using: 'ReceiptValidator', password: 'String?', completion: '(VerifyReceiptResult) -> Void')如果我只删除'using:‘部分,就会发生错误。我是一个相当新的开发人员,所以如果有人能解释这意味着什么,以及如何填写这一部分,那就太好了。
发布于 2017-04-14 13:42:52
首先,您需要创建AppleReceiptValidator对象并将此对象传递给First参数,如下所示。
let validator = AppleReceiptValidator(service: .production)
SwiftyStoreKit.verifyReceipt(using: validator, password: "Your_shared_secret") { (result) in
switch result {
case .success(receipt: let receiptInfo): self.reactOn(info: receiptInfo)
case .error(error: let receiptError): self.reactOn(error: receiptError)
}
completion()
}我想要注意的是,在Apple文档中,您不应该从您的应用程序向Apple后端发送收据。应该这样做:
在Apple文档中,关于password的内容是这样写的:“仅用于包含自动更新订阅的收据。您的应用程序的共享密钥(十六进制字符串)。”
更多信息,here。
发布于 2018-05-24 04:54:18
根据swiftyStoreKit官方指南,当前版本的swiftyStoreKit验证应用内订阅的完整正确代码为:
let appleValidator = AppleReceiptValidator(service: .production, sharedSecret: "your-shared-secret")
SwiftyStoreKit.verifyReceipt(using: appleValidator) { result in
switch result {
case .success(let receipt):
let productId = "com.musevisions.SwiftyStoreKit.Subscription"
// Verify the purchase of a Subscription
let purchaseResult = SwiftyStoreKit.verifySubscription(
ofType: .autoRenewable, // or .nonRenewing (see below)
productId: productId,
inReceipt: receipt)
switch purchaseResult {
case .purchased(let expiryDate, let items):
print("\(productId) is valid until \(expiryDate)\n\(items)\n")
case .expired(let expiryDate, let items):
print("\(productId) is expired since \(expiryDate)\n\(items)\n")
case .notPurchased:
print("The user has never purchased \(productId)")
}
case .error(let error):
print("Receipt verification failed: \(error)")
}
}你可以在这里找到它,包括其他例子:https://cocoapods.org/pods/SwiftyStoreKit#verify-purchase
https://stackoverflow.com/questions/42819440
复制相似问题