无法从iOS 7的App Store收据中获取original_application_version

我正在尝试从现有客户实现从付费到免费增值模式的无缝转换,但在收到original_application_version时出现问题。

我的应用程序仅适用于iOS 7,正如您所知,Apple在iOS 7中引入了Unified Receipt,如前所述,该应用程序应包含有关用户原始购买的信息。 所以我的想法如下:1.解码收据。 2.检查原购买是否在这个新的免费增值版本之前。 3.如果是 – 解锁所有的IAP。

如文档中所述,收据应具有此“原始应用程序版本”字段(“最初购买的应用程序的版本”)。 还有人说:“在沙箱环境中,这个字段的值总是”1.0“。” 但由于某种原因,我不是这种情况。

所以,我的问题是:有没有人有运气得到这个价值?

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

这可能是一个与iTunes / Apple帐户有关的沙盒怪癖,特别是如果它发生在各种图书馆。 我也会尝试使用https://github.com/rmaddy/VerifyStoreReceiptiOS ,以保证安全。

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

另外,testing生产情况。 从App Store安装当前版本,然后在其上安装新版本,查看original_application_version字段是否仍为零。

看起来像我自己复制这个问题( 使用RMStore库得到originalAppVersion )。 我检查了一下itunes服务器validation会返回什么。 有趣的结果是从苹果服务器返回的NO FIELD名为“original_application_version”,但是有一个名为“original_purchase_date”的字段。 也许date比版本号更可靠…