我正在尝试为现有客户实现从付费模式到免费增值模式的无缝过渡,但在收据中获取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)来解析收据,两者都给我这个字段的空值。我也在ASN.1 Field Type 19中寻找这个值,也许我可以用另一个字段用于我的目的?
答案 0 :(得分:3)
它可能是与iTunes / Apple帐户相关的沙箱怪癖,特别是如果它发生在各种库中。我也会尝试使用https://github.com/rmaddy/VerifyStoreReceiptiOS,以确保安全。
从“设置”注销也可能会有所帮助。
另外,测试生产案例。从App Store安装当前版本,然后在其上安装新版本,看看original_application_version
字段是否仍为零。
答案 1 :(得分:1)
看起来我自己重复了这个问题(Using RMStore library to get originalAppVersion)。我检查了一下itunes服务器验证会返回什么。有趣的结果是没有从Apple服务器返回名为“original_application_version”的FIELD,但是有一个名为“original_purchase_date”的FIELD。也许日期比版本号更可靠......