2

如果得到回答,我有几个问题将帮助我更好地理解事情:

  1. 有没有办法区分新订阅和之前购买的续订?

  2. 订阅是否会在 expires_date 命中后立即进行续订?似乎有时(至少在沙盒中)我的订阅会在 expires_date 前 30-60 秒更新。

  3. 更新是否总是在 expires_date 命中后的一致时间发生?例如,如果我启动我的应用程序并且 expires_date 已经过去,什么时候会发生续订(假设用户没有取消)?或者更确切地说,我的应用程序何时会知道 Apple 端发生了续订?

  4. 场景:应用程序已启动,并且我的一项订阅的 expires_date 已过。我应该向 Apple 发送收据以查看该订阅是否已续订,还是应该等待几秒钟以查看续订过程是否发生?

谢谢!

4

1 回答 1

4

我将尝试回答我自己的问题:

  1. 为此,我会在初始购买完成后存储expires_date订阅。NSUserDefaults当订阅到期时,我从NSUserDefaults. 这使我可以确定任何后续订阅是续订expires_date存在于 NSUserDefaults -expires_date续订完成后更新为新的)还是新购买expires_date不存在,因为它在之前的订阅到期时被删除,或者产品从未购买过)。

  2. 这个问题无关紧要 - 我所做的是将应用程序每次进入前台时expires_date存储的内容进行比较。如果已通过,我会致电我的服务器以与 Apple 验证收据。Apple 将订阅状态返回给我的服务器(意味着订阅有效,意味着它已过期,就我的应用而言,所有其他的都是微不足道的)并且服务器将其转发给我的应用。以这种方式,我的应用程序需要多长时间才能收到续订提醒(也就是技术上,订阅已经通过 Apple 续订,但我的应用程序还不知道),因为我确定订阅是否已过期或不。NSUserDefaultscurrent_datecurrent_dateexpires_date021006

  3. 在沙盒中,续订似乎非常不可信。有时我的订阅会续订五到六次(根据 Apple 的标准),有时会续订一次,有时根本不会。根据记录,7 天订阅的续订频率并不比 30 天订阅高很多。在沙盒中拥有与在实时服务器中相同的可靠性会很好,这样我就可以相应地编写代码(并且压力更小),但我离题了。我发现让订阅提醒我的应用他们已续订的唯一可靠且一致的方法是 when expires_date has passed && I force close/relaunch my app. 有时在后台和前台状态之间切换是可行的,但根据我的经验,这不太可靠——我觉得这在实时服务器中会[更好] 工作。

  4. expires_date当我注意到已经过去时,我所做的是检查我的服务器(反过来检查苹果) 。所以如果更新发生在之前/之后/从不发生都没有关系,因为我的服务器会告诉我订阅的某些状态。

我希望这些信息可以帮助其他有同样问题的人!

于 2012-06-19T18:49:36.433 回答