首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftyStoreKit语法是否已更改?

SwiftyStoreKit语法是否已更改?
EN

Stack Overflow用户
提问于 2017-03-16 03:52:51
回答 2查看 1.2K关注 0票数 2

我正在遵循一个实现应用内购买的教程,https://www.youtube.com/watch?v=dwPFtwDJ7tc&t=1170s,当我尝试编写它时,有一行代码与教程不同。

视频说要把这行代码写成:

代码语言:javascript
复制
SwiftyStoreKit.verifyReceipt(password: sharedSecret, completion: {(more code added here)})

然而,当我写出它时,出现的唯一选项涉及到另一个部分,这就是“使用:”

代码语言:javascript
复制
SwiftyStoreKit.verifyReceipt(using: 'ReceiptValidator', password: 'String?', completion: '(VerifyReceiptResult) -> Void')

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

EN

回答 2

Stack Overflow用户

发布于 2017-04-14 13:42:52

首先,您需要创建AppleReceiptValidator对象并将此对象传递给First参数,如下所示。

代码语言:javascript
复制
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. 你的后端发送回执给苹果后端。
  3. 你的后端发送结果给你的应用程序收据有效或无效。

在Apple文档中,关于password的内容是这样写的:“仅用于包含自动更新订阅的收据。您的应用程序的共享密钥(十六进制字符串)。”

更多信息,here

票数 3
EN

Stack Overflow用户

发布于 2018-05-24 04:54:18

根据swiftyStoreKit官方指南,当前版本的swiftyStoreKit验证应用内订阅的完整正确代码为:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42819440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档