iOS 长期用户收据验证失败

iOS Receipt validation failing for long-term users

在我们的最新版本中,我们将我们的应用程序从付费模式转换为应用程序内订阅模式。我们向我们的现有用户承诺,我们将让他们加入订阅,因为他们已经为该应用付费了。在我们的代码中,我们在第一个订阅版本之前寻找原始应用程序版本的有效收据。这一切在我们的测试中都非常有效。

当我们发布新应用时,我们开始收到长期用户的反馈,他们被要求订阅(他们甚至不应该看到订阅按钮)。当我们研究这个问题时,我们注意到所有这些用户都在我们的应用程序于 2014 年 9 月转移给新开发者之前购买了我们的应用程序。

重现此问题很困难 - 我们如何模拟 2014 年的应用安装?我可能能够作为受影响的用户之一登录,这将涉及使用他们的 Apple 凭据。我不太愿意要求用户分享他们的凭据。

由于我无法重新创建它并且我们的代码非常简单,所以我对发生的情况的最佳猜测是我们没有收到在应用程序转移之前购买的用户的有效收据2014.

所以,我有几个问题:

  1. 有没有其他人遇到过这种情况?
  2. 如果有,你是怎么解决的?
  3. 你会如何解决它?

仅供参考 - 我已向 Apple (3045378) 提出问题。

在与 Apple 开发人员技术支持的交谈中,我们发现了一种使用最近发布的统一日志记录功能从设备中提取 NSLog 消息的方法。我们的几个用户提交了他们的日志,这清楚地表明他们正在获得有效的收据,但这些收据的最初购买版本是 4 和 2.8。

考虑到我们当前的版本是 1.7.1,这些都是奇怪的非典型数字。然而,收据上报的Original Application Version实际上是CFBundleVersion(或Build),与App Store上报的App Version完全不同。

我假设开发人员在应用转移之前使用的内部版本编号系统与标准...方案不同。

我改进了代码中的版本检查并重新提交了应用程序。它是今天发布的,到目前为止,所有这些都得到了正确的继承。