每N小时增加生命

问题描述:

即使关闭应用程序并通知用户,我也希望实现每4小时增加一次生命到UserDefaults.standard.value(forKey: "lifes")的机制。每N小时增加生命

关于通知我阅读文章,它不会很难。但如果我在12小时内没有参加比赛,生命值如何提高。返回时,我应该获得+3的生命。

+0

您可以每隔4小时通过本地通知通知用户(令人讨厌,但是...),并且您可以在应用程序再次打开时立即添加所有生命,计算自上次应用程序以来花费了多少小时打开,你可以做一个“生命+ =小时/ 4”的东西。 – holex

当游戏暂停时(UIApplicationWillResignActive),您会得到一个事件,因此您可以在用户默认值中记下它是什么时间。当游戏继续时(UIApplicationDidBecomeActive),您会收到一个事件,以便查看它是什么时间以及自您变为非活动状态以来已经过了多少小时。

+0

尽管我尊重上述答案,但建议的解决方案可能会造成破坏性并可能导致灾难,因为您完全依赖设备本地时间。如果用户将应用程序置于后台并将时间改为24小时并再次启动应用程序,那么最终会添加+6生命,这是错误的,而应该是什么方法是每次启动应用程序时都要求服务器关联时间流逝,并不断通知服务器关于时间戳在定期间隔时在前台:)就像聊天应用程序:) –

+0

@SandeepBhandari所以唯一的方式是使用互联网连接?:(我不想... – Arti

+0

@SandeepBhandari如果发生这种情况,您可以收到来自NSCalendar的日期变更通知,并作出相应补偿。 – matt

这是不可能的,如果应用程序“关闭”。

实现此行为的唯一方法是使用推送通知(由您的服务器推送,而不是应用程序推送)。

请参阅thisthis Apple文档。


我的意见是,用户将删除您的应用程序,因为她会受到太频繁的通知的干扰。