如果得到解答,我有几个问题将帮助我更好地理解事情:
有没有办法区分新订阅和之前购买的续订?
订阅是否会在 expires_date 到期后立即进行续订?似乎有时(至少在沙盒中)我的订阅会在 expires_date 前 30-60 秒续订。
是否总是在 expires_date 之后的一致时间发生续订?例如,如果我启动我的应用程序并且 expires_date 已经过去,什么时候会发生续订(假设用户没有取消)?或者更确切地说,我的应用何时会知道 Apple 端已发生续订?
场景:应用程序已启动,并且我的一项订阅的 expires_date 已过。我应该向 Apple 发送收据以查看该订阅是否已续订,还是应该等待几秒钟以查看续订过程是否发生?
谢谢!
Best Answer-推荐答案 strong>
我将尝试回答我自己的问题:
为此,我在初始购买完成后将订阅的 expires_date 存储在 NSUserDefaults 中。当订阅到期时,我从 NSUserDefaults 中删除该对象。这使我可以确定是否有任何后续订阅是 续订(expires_date 存在于 NSUserDefaults - 在续订完成时使用新的 expires_date 更新)或 < strong>新购买(expires_date 不存在,可能是因为它在之前的订阅到期时被删除,或者产品从未购买过)。
这个问题无关紧要 - 我所做的是每次应用程序进入前台时将存储在 NSUserDefaults 中的 expires_date 与 current_date 进行比较.如果 current_date 已超过 expires_date ,我会调用我的服务器来验证 Apple 的收据。 Apple 将订阅状态返回给我的服务器(0 表示订阅有效,21006 表示已过期,就我的应用而言,所有其他都是微不足道的) 并且服务器将其转发到我的应用程序。以这种方式,我的应用程序需要多长时间才能收到续订提醒(也就是技术上订阅已经通过 Apple 续订,但我的应用程序还不知道),因为我确定订阅是否已过期与否。
在沙盒中,续订似乎非常不可信。有时我的订阅会续订五六次 (the standard, according to Apple),有时会续订一次,有时根本不会。根据记录,7 天订阅的续订频率并不比 30 天订阅高很多。在沙盒中拥有与我们在实时服务器中相同的可靠性会很好,这样我就可以相应地编写代码(并且压力更小),但我离题了。我发现让订阅提醒我的应用他们已续订的唯一可靠且一致的方法是当 expires_date 已过 && 我强制关闭/重新启动我的应用 。有时在后台和前台状态之间切换是可行的,但根据我的经验,这不太可靠——我觉得这在实时服务器中会[更好] 工作。
当我发现 expires_date 已过时,我会检查我的服务器(反过来检查 Apple)。因此,更新发生在之前/之后/从不发生都没有关系,因为我的服务器会确切地告诉我订阅的状态。
我希望这些信息可以帮助其他有同样问题的人!
关于iOS 自动续订订阅 - 有关续订过程的问题,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/11004616/
|