iOS自动续订订阅 – 有关续订过程的问题

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

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

  2. 订阅expires_date后,订阅是否会立即完成续订过程? 似乎有时(至少在Sandbox中)我的订阅将在expires_date之前续订30-60秒。

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

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

谢谢!

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

  1. 为此,我会在初始购买完成后在NSUserDefaults存储订阅的expires_date 。 订阅到期时,我从NSUserDefaults删除该对象。 这允许我确定是否有任何后续订阅是续订 (在NSUserDefaults中存在expires_date在续订完成时使用新的expires_date更新)或新购买expires_date不存在,因为它在先前的订阅到期时被删除或者产品已经删除从未被购买过)。

  2. 这个问题无关紧要 – 我每次应用程序进入前台时都会将存储在NSUserDefaults expires_datecurrent_date进行比较。 如果current_date已通过expires_date ,我会调用我的服务器来validationApple的收据。 Apple将订阅状态返回给我的服务器( 0表示订阅有效, 21006表示已过期,其他所有其他程序都是我的应用程序),服务器将其转发到我的应用程序。 通过这种方式,我的应用程序需要多长时间才能获得续订的警报(也就是说,订阅已经通过Apple技术更新,但我的应用程序还不知道),因为我确定订阅是否已过期或不。

  3. 在沙盒中,续订似乎非常不值得信任。 有时我的订阅会续订五到六次( 标准,根据Apple ),有时一次,有时根本不会。 根据记录,7天订阅的续订频率不会超过30天订阅。 在沙盒中具有与在实时服务器中相同的可靠性将是很好的,因此我可以相应地编写代码(并且压力更小),但我离题了。 我发现的唯一一个肯定和一致的方式是让订阅提醒我的应用程序他们已经续订的是expires_date has passed && I force close/relaunch my app 。 有时在背景和前景状态之间切换是有效的,但根据我的经验,这不太可靠 – 我觉得这在现场服务器中会更好[更好]。

  4. 当我注意到expires_date已经过去时,我所做的是检查我的服务器(进而检查Apple)。 因此,更新是在/之前/之后发生并不重要,因为我的服务器告诉我确定订阅的状态。

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