对于长期用户,iOS收据验证失败

时间:2017-02-10 18:18:14

标签: ios receipt-validation

通过我们的最新版本,我们将应用从付费转换为应用内订阅。我们向现有用户承诺,我们会让他们进入订阅状态,因为他们已经为应用付费了。在我们的代码中,我们会在第一个订阅版本之前查找包含原始应用程序版本的有效收据。这一切在我们的测试中都很有效。

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

重新创建此问题很困难 - 我们如何在2014年模拟应用安装?我可以作为受影响的用户之一登录,这将涉及使用他们的Apple凭据。我要求用户分享他们的凭据并不是很舒服。

由于我无法重新创建它并且我们的代码非常简单,我最好的猜测是,我们没有收到2014年应用转移之前购买的用户的有效收据。

所以,我有几个问题:

  1. 还有其他人经历过这个吗?
  2. 如果是这样,你是如何解决的?
  3. 你会如何排除故障?
  4. 仅供参考 - 我向Apple提交了一个问题(3045378)。

1 个答案:

答案 0 :(得分:0)

在与Apple Developer Technical Support谈话时,我们发现了一种使用最近发布的统一记录功能从设备中提取NSLog消息的方法。我们的几个用户提交了他们的日志,这清楚地表明他们收到了有效的收据,但最初购买的这些收据的版本是4和2.8。

鉴于我们当前的版本是1.7.1,这些是奇怪的非典型数字。但是,收据中报告的原始应用程序版本实际上是CFBundleVersion(或Build),它可以是与App Store中报告的应用程序版本完全不同的字符串。

我认为应用程序转移之前的开发人员使用的是与标准...方案不同的构建编号系统。

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