小编Bra*_*ogs的帖子

如何在生产中获得原始应用程序版本?

我们最近将可购买的应用程序转换为“免费增值”模式。我们正在使用 Bundle.main.appStoreReceiptURL 来拉取收据,然后检查“original_application_version”以查看用户是否从 App Store 下载了较旧的付费版本,或者他们是否下载了较新的免费版本,并且在应用内购买了非消耗品升级到完整版。

这在测试 Sandbox 时非常有效,但在生产中,旧版本的应用程序无法正确验证它们是否在免费增值版本之前下载。

以下代码使用 productionStoreURL 和从 Bundle.main.appStoreReceiptURL 获得的收据调用:

private let productionStoreURL = URL(string: "https://buy.itunes.apple.com/verifyReceipt")
private let sandboxStoreURL = URL(string: "https://sandbox.itunes.apple.com/verifyReceipt")

private func verifyIfPurchasedBeforeFreemium(_ storeURL: URL, _ receipt: Data) {
    do {
        let requestContents:Dictionary = ["receipt-data": receipt.base64EncodedString()]
        let requestData = try JSONSerialization.data(withJSONObject: requestContents, options: [])

        var storeRequest = URLRequest(url: storeURL)
        storeRequest.httpMethod = "POST"
        storeRequest.httpBody = requestData

        URLSession.shared.dataTask(with: storeRequest) { (data, response, error) in
            DispatchQueue.main.async {
                if data != nil {
                    do {
                        let jsonResponse = …
Run Code Online (Sandbox Code Playgroud)

ios receipt-validation swift

5
推荐指数
1
解决办法
801
查看次数

标签 统计

ios ×1

receipt-validation ×1

swift ×1