gpt4 book ai didi

ios - 实现持久性倒数计时器

转载 作者:行者123 更新时间:2023-11-29 10:33:14 24 4
gpt4 key购买 nike

有些游戏的某些 Action 与时间相关。例如,如果用户玩了游戏,则每 24 小时他会获得一个积分......在我们关闭手机并在正确设置几个小时后回来。

这是怎么做到的?一定有某种方法可以将当前时间写入持久存储然后从中读取?

我只是猜测它是这样的:

 NSDate * now = [NSDate date];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"HH:mm:ss"];
NSString *newDateString = [outputFormatter stringFromDate:now];

然后是将 newDateString 写入持久存储的部分。

此外,如果这是一种方法,如果用户在他的设备上手动更改时间会怎样?我们可以依靠这个还是有一些其他方法来跟踪游戏中特定时刻之间经过的实时时间?

最佳答案

您可以通过将下一个奖励时间写入 NSUserDefaults 并比较之前的值来完成此操作。

// Fetch previous "next award" time.
NSNumber *previousTime = [[NSUserDefaults standardUserDefaults] objectForKey:@"next_award_time"];
NSTimeInterval now = [[NSDate date] timeIntervalSince1970];

// If we haven't yet scheduled a "next award" time, or if we've passed it..
if (!previousTime || [previousTime doubleValue] < now) {
// We had a previous value, so we've passed the time.
if (previousTime) {
// Award user.
}
// Set next award time.
NSTimeInterval nextTime = [[NSDate date] timeIntervalSince1970] + 60*60*24;
[[NSUserDefaults standardUserDefaults] setObject:@(nextTime) forKey:@"next_award_time"];
}

就担心用户更改自己的设备时间而言,您需要向公正的第三方时钟发出网络请求。这可能是您控制的服务器或众所周知的时间服务器。您可能想查看 this answer寻求有关如何联系 NTP 的帮助。

关于ios - 实现持久性倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com