希望这个标题是不言自明的.我正在try 这样做:

checkIfUserIsSubscribedToProduct(productID, transactionID: "some-unique-transaction-string", completion: { error, status in
    if error == nil {
        if status ==  .Subscribed {
            // do something fun
        }
    }
 }

我提供的假设代码是否存在?我觉得我在吃疯狂的药片

Edit

在类似的问题中,我一直看到"哦,你必须验证收据"的一般答案,但没有解释如何验证,甚至没有解释收据是什么.有人能告诉我如何"验证收据"吗?我试了this tutorial次,但似乎不起作用.

Edit - For Bounty

请解决以下情况:一个用户订阅了我的自动续费订阅,并因此获得了更多的数字内容-酷,实现.但我如何在每次打开应用时判断订阅是否仍然有效(即他们没有取消订阅)?有没有类似于我在问题中提供的假设代码?请 bootstrap 我了解这一点,并提供关于这个主题的任何可能有用的进一步细节.

推荐答案

我知道每个人都很关心我以及我在这件事上的表现——不用担心,我的问题解决了.主要的问题是,我try 了documentation个苹果的示例代码,但它不起作用,所以我放弃了.然后我回到它,用Alamofire实现了它,效果非常好.以下是代码解决方案:

Swift 3:

let receiptURL = Bundle.main.appStoreReceiptURL
let receipt = NSData(contentsOf: receiptURL!)
let requestContents: [String: Any] = [
    "receipt-data": receipt!.base64EncodedString(options: []),
    "password": "your iTunes Connect shared secret"
]

let appleServer = receiptURL?.lastPathComponent == "sandboxReceipt" ? "sandbox" : "buy"

let stringURL = "https://\(appleServer).itunes.apple.com/verifyReceipt"

print("Loading user receipt: \(stringURL)...")

Alamofire.request(stringURL, method: .post, parameters: requestContents, encoding: JSONEncoding.default)
    .responseJSON { response in
        if let value = response.result.value as? NSDictionary {
            print(value)
        } else {
            print("Receiving receipt from App Store failed: \(response.result)")
        }
}

Swift相关问答推荐

启用完成并发判断以及如何解决警告(续)

同步问题,发送Api Call之前未设置idToken

是否有一个Kotlin等价的Swift s @ AddendableReport注释'

从Swift中的泛型类继承?

在一行语句中比较Date.now的相等性是否安全

Swift ui 转换无法按预期工作

TimeZone 背后的目的

OSX 中的 Popover 无法确定透明度

为什么 XUIView 中的 Binding 看不到更新后的值?

如何使用 Swift 在非本地函数中切换()一个 Bool?

领域异常中的相同方法:发送到实例的无法识别的 Select 器

从 iPhone 中的安全飞地获取真正的随机数?

TextField 键入未完成

SwiftUI:异步网络请求后@State 值不更新

iOS SwiftUI - 无法转换 ObservedObject 类型的值

有什么方法可以快速为泛型参数分配默认值?

Swift在十进制格式中失go 精度

Swift:创建 UIImage 数组

在 unwind segue 之后执行 push segue

使用相机进行人脸检测