SwiftyStoreKit语法改变了吗?

时间:2017-03-15 19:52:51

标签: swift swift3 in-app-purchase

我正在关注实施应用内购买的教程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')

如果我只是删除'使用:'部分发生错误。我是一个相当新的开发人员,所以如果有人能解释这意味着什么,以及如何填写这一部分,那将会很棒。

2 个答案:

答案 0 :(得分:2)

首先,您需要创建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后端发送收据。它应该以这种方式完成:

  1. 您的应用会将收据发送给您的后端。
  2. 您的后端将收据发送给Apple后端进行验证。
  3. 你的后端得到苹果的回复。
  4. 您的后端将结果发回给您的应用,收据有效或无效。
  5. 在Apple文档中写有关密码:"仅用于包含自动续订订阅的收据。您应用的共享密钥(十六进制字符串)。"

    有关它的更多信息here

答案 1 :(得分:0)

当前版本的swiftyStoreKit的完整正确代码,用于验证应用内订阅,包括根据swiftyStoreKit的官方指南首先验证收据:

data =   {
        "maps": [
            {
                "id": "1",
                "iscategorical": "0"
            },
            {
                "id": "2",
                "iscategorical": "0"
            },
            {
                "id": "3",
                "iscategorical": "0"
            }
        ]
    }

您可以在此处找到其他示例:https://cocoapods.org/pods/SwiftyStoreKit#verify-purchase