首页 文章

非续订订阅:转回时间

提问于
浏览
0

我正在创建一个应用程序,可以在有限的时间内为用户解锁功能 . 高级功能让我们打电话给他们 . 他们可以购买一个月,6个月或一年的订阅 . 这些订阅将不续订 . 经过大量搜索网络并找到非常不同的“解决方案”后,我转向StackOverflow以获得最佳效果 .

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

我怎么能避免这个?我应该检查某个服务器以检查实时和日期吗?如果用户仅在飞行模式下使用该应用程序,该怎么办?

Thx提前!

2 回答

  • 0

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

    当然,这假设用户在启动应用程序时具有网络连接 . 你只能做这么多!

  • -1

    实际上,在成功完成InAppPurchase苹果之后会发生什么事情将为您提供一个事务接收...此事务收据存储在本地 . 当您想要检查订阅处于活动状态还是已过期状态时,您需要使用此事务收据请求storekit,然后商店工具包将为您提供状态..如果状态为0,则它处于活动状态 . 如果状态为21006,那么您的交易已过期 . 如果你想继续在antoher设备中订阅,那么你需要在那里恢复交易..完成恢复后你将获得所有的产品ID和交易收据..你需要存储交易收据,你需要传递给storekit是否处于活动状态或已过期状态..对不起我的英语不好..

相关问题