我几个月前在我的两个应用程序中实现了应用内自动续订订阅。我存储了用户的旧收据,并在订阅期结束时从我的服务器联系Apple,以检查订阅是否仍然有效。
我注意到我的一些用户正在从客户端代码本身自动更新。
我的应用在应用时调用[[SKPaymentQueue defaultQueue] addTransactionObserver:myObserver]
,当返回SKPaymentTransactionStatePurchased
或SKPaymentTransactionStateRestored
时,它会调用我的服务器验证收据并为我的用户提供订阅。
我一直在努力了解客户在续订期结束时获得的交易通知背后的逻辑。有谁知道为什么只有一些用户收到通知,其余的要求服务器重新验证他们的收据?我试着想也许它与addTransactionObserver的调用有关。也许那些用户在后台处理时杀死了应用程序并在订阅期结束后再次进入应用程序,导致addTransactionObserver:被触发并且通知到达。 如果我可以让所有用户收到此通知,我将不必在订阅期结束时再运行服务器调用,因为它们将在需要时从客户端触发。
任何洞察力肯定有助于理解这个难题。
由于
Roi的
答案 0 :(得分:2)
我的经验表明,您需要继续定期验证服务器上的收据。我注意到和你一样,这些新收据不一致地发送到应用程序。我认为Apple会在新续订的特定时间段内重新启动应用程序时将收据发送给客户。