2014-10-30 78 views
0

我正在创建一个应用程序,可以在有限的时间内向用户解锁功能。高级功能让我们打电话给他们。他们可以购买一个月,6个月或一年的订阅。这些订阅将不会续订。经过大量的网络搜索和寻找非常不同的“解决方案”之后,我转向了StackOverflow以寻求最好的解决方案。非续订订阅:回头时间

购买订阅时,结束日期会存储在设备上,直到通过iCloud进行同步,因为Apple希望您在所有设备上拥有此订阅。该应用程序会检查iCloud以查看当前订阅是否仍然可用,并为剩余天数的用户显示精彩的倒计时。但是我目前遇到了一个问题。当用户支付了一个月的时间,并将设备的日期更改为一年前(或其他)时,它可以使用一年的订阅。倒计时现在不显示还剩23天,但389。

我该如何避免这种情况? 我应该检查某个服务器以检查实时和日期吗? 如果用户只在飞行模式下使用应用程序会怎么样?

Thx提前!

回答

0

您可以检查标准的基于Web的时间服务器来执行此操作。由于我有我自己的服务器(作为我的应用程序内购买机制的一部分),因此我只需要在服务器上向服务器询问当前时间。每当应用程序启动时,我都会这样做,每次我都会进行服务器调用(通常是在应用程序内购买完成时)。然后我在本地存储时间(无论是在KeyChain还是NSUserDefaults中,都不记得哪个!),并使用它(和设备时间,以后会及时)来计算购买到期日。

当然,这假定用户在启动应用程序时有网络连接。虽然你只能做很多!

-1

其实发生什么事后,你的InAppPurchase苹果成功完成后会为你提供一个交易收据......这个交易收据存储在本地。当您想要检查订阅处于活动状态还是过期时,您需要使用此事务处理请求请求storekit,然后商店工具包会为您提供状态..如果状态为0,那么它处于活动状态。如果状态是21006,那么您的交易已过期。如果你想继续订购另一个设备,那么你需要恢复那里的交易..完成恢复后,你将得到所有的产品ID和交易reciepts ..你需要在那里存储交易reciepts,你需要通过此storekit是否处于活动状态或过期状态..对不起,我可怜的英语..

+0

这是错的。苹果公司对于续订时间/日期不知道任何关于续订时间/日期的内容。实现这种非续订订阅机制取决于应用程序。 – 2015-03-03 15:20:09