SwiftyStoreKit语法已更改?
我正在遵循一个实现应用内购买的教程,当我试图编写它时,有一行代码与教程不同 视频中说将代码行写为:SwiftyStoreKit语法已更改?,swift,swift3,in-app-purchase,Swift,Swift3,In App Purchase,我正在遵循一个实现应用内购买的教程,当我试图编写它时,有一行代码与教程不同 视频中说将代码行写为: SwiftyStoreKit.verifyReceipt(password: sharedSecret, completion: {(more code added here)}) 然而,当我把它写出来的时候,唯一的选择涉及到另一部分,这就是“使用:” SwiftyStoreKit.verifyReceipt(using: 'ReceiptValidator', password: 'Strin
SwiftyStoreKit.verifyReceipt(password: sharedSecret, completion: {(more code added here)})
然而,当我把它写出来的时候,唯一的选择涉及到另一部分,这就是“使用:”
SwiftyStoreKit.verifyReceipt(using: 'ReceiptValidator', password: 'String?', completion: '(VerifyReceiptResult) -> Void')
如果我只是删除“using:”部分,就会发生错误。我是一个相当新的开发人员,如果有人能解释这意味着什么,以及如何填写这一部分,那就太好了。首先,您需要创建AppleReceiptValidator对象,并将此对象传递给第一个参数,如下图所示
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后端发送收据。应该这样做:
更多信息。根据《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)")
}
}
您可以在这里找到它,包括其他示例:我在某个地方读到,我们不能将“sharedSecretString”用作!“收件验证器”。对吗?*可以用,不能用。对不起,谢谢,但我还不能奖励奖金,因为有一个最短的时间限制。你能在空闲时间帮我回答这个问题吗?非常感谢。