【问题标题】:Can't get the original_application_version from the App Store Receipt in iOS 7在 iOS 7 中无法从 App Store Receipt 获取 original_application_version
【发布时间】:2013-12-17 08:24:40
【问题描述】:

我正在尝试为我当前的客户实现从付费模式到免费增值模式的无缝过渡,但在从收据中获取 original_application_version 时遇到问题。

我的应用程序仅适用于 iOS 7,您可能知道,Apple 在 iOS 7 中引入了统一收据,如上所述,其中应包含有关用户最初购买的信息。所以我的想法如下: 1. 解码收据。 2. 检查原始购买是否是在这个新的免费增值版本之前进行的。 3. 如果是 - 解锁所有 IAP。

如文档中所述,收据应包含此“原始应用程序版本”字段(“最初购买的应用程序版本。”)。也有人说“在沙盒环境中,这个字段的值永远是‘1.0’”。但由于某种原因,这对我来说不是这样。

所以,我的问题是:有人幸运地得到了这个值吗?

我尝试使用 DHAppleReceiptParser (https://github.com/DarkHorseComics/DHAppleReceiptParser) 和 RMStore (https://github.com/robotmedia/RMStore) 来解析收据,两者都给我这个字段的空值。我也在 ASN.1 字段类型 19 中寻找这个值,也许还有另一个字段可以用于我的目的?

【问题讨论】:

    标签: ios iphone ios7 in-app-purchase


    【解决方案1】:

    这可能是与 iTunes/Apple 帐户相关的沙盒怪癖,特别是如果它发生在各种库中。为了更加安全,我也会尝试使用https://github.com/rmaddy/VerifyStoreReceiptiOS。

    从“设置”中注销也可能会有所帮助。

    另外,测试生产用例。从 App Store 安装当前版本,然后在上面安装新版本,看看 original_application_version 字段是否仍然为零。

    【讨论】:

    • @uson1x 那是什么问题?
    • 从设置中注销有帮助。在那之后,所有必要的字段都神奇地出现了。只是为了说明,我最后使用了 RMStore 并通过original_application_version 字段进行了检查。部署到 App Store 后一切正常,到目前为止没有用户抱怨。
    • 从商店安装,然后用 XCode 重新构建它为我工作。谢谢!
    • 有谁知道谁来测试该功能以进行生产(例如 testflight,..)。在本地它对我很有用。但我想通过 testflight 与我的 beta 测试人员一起验证该实现。但是安装testflight版本后,receipe总是为空。
    【解决方案2】:

    看起来我自己重复了这个问题 (Using RMStore library to get originalAppVersion)。我检查了 iTunes 服务器验证会返回什么。有趣的结果是,没有从苹果服务器返回的名为“original_application_version”的字段,但有一个名为“original_purchase_date”的字段。也许日期比版本号更可靠……

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 2014-07-20
      • 1970-01-01
      • 2016-09-17
      • 2017-05-24
      • 2020-09-13
      • 1970-01-01
      • 2013-09-27
      • 2012-11-18
      相关资源
      最近更新 更多