ios:查找自上次应用程序发布以来的实时信息



SO基本上所有内容都在标题中。我搜索了很多,但没有找到任何不需要互联网连接的正确解决方案。如果用户更改设置中的时间-我找不到自上次启动以来的实时时间。

我的游戏需要它,每小时都需要它,即使你不玩游戏,你也会得到一些硬币。

如果用户在设置中更改时间-这会影响NSDate()中的时间,用户可以用硬币作弊。

因此,在应用程序启动时将NSDate()保存为用户默认值。下次应用程序出现在前台或再次启动时,获取当前NSDate并减去保存的日期。这将为您提供两个日期之间的秒数。用秒计算小时只需除以3600即可Duncan C刚刚编辑

编辑:

请注意,在Swift的较新版本中(从Swift 2开始?),大多数Foundation类都被定义为没有NS前缀的原生Swift类。对于swift的较新版本,请将上面出现的所有NSDate替换为Date

还要注意的是,在iOS≥7.0中,Calendar有一些方法可以使这种计算更简洁、更容易。有一种新的方法dateComponents(_:from:to:),可以用你想要的任何单位来计算两个日期之间的差异。你可以用它来计算两个日期之间的秒数,比计算秒数更干净,正如我最初的回答中所概述的那样。日历方法也倾向于处理边界条件,如跨越夏令时、闰秒等。

考虑以下Swift 4/5游乐场代码:

import UIKit
let now = Date()
let randomSeconds = Double.random(in: 100000...3000000)
let later = now + randomSeconds
if let difference = Calendar.current.dateComponents([.second],
                                                    from: now,
                                                    to: later)
    .second {
    print(difference)

试试这个。

步骤1。当用户退出游戏时。使用当前时间设置NSUserDefault。

步骤2。当应用程序启动时,在您的appDelagate文件中获取此值。

步骤3。相应地计算和奖励硬币之间的差异。

最新更新