gpt4 book ai didi

ios - 如何在 Swift 游戏中制作前台和后台 2-3 小时计时器?

转载 作者:行者123 更新时间:2023-11-30 12:56:20 25 4
gpt4 key购买 nike

我有一个游戏,当玩家失败时我会添加一个计时器,目前为 3 小时。时间结束后,玩家可以免费获得我游戏的15个金币。

目前,我正在使用 NSTimer。问题是,每当我将游戏置于后台模式时,计时器就会在我阅读文档时停止。因此,计时仅在游戏播放时间运行,而不是始终运行。

我怎样才能实现这个目标?当计时器结束时,我什至会向用户发送通知,以便用户可以进入我的游戏并免费获取硬币。

这是我到目前为止所拥有的:

var coinCountdown = 10800 // 3hr = 10800
var coinCurrentTimer = NSTimer.init()
var coinCountdownLabel = SKLabelNode()

然后在我的 SKScene 的 init 中我这样做:

self.coinCurrentTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(GameScene.updateCoinCountdown), userInfo: nil, repeats: true)

这是 updateCoinCountdown 方法:

func updateCoinCountdown() {
if(self.coinCountdown > 0){
var hour = String(self.coinCountdown / 3600)
var minutes = String((self.coinCountdown % 3600) / 60)
var seconds = String((self.coinCountdown % 3600) % 60)

if Int(hour) < 10 {
hour = "0" + hour
}

if Int(minutes) < 10 {
minutes = "0" + minutes
}

if Int(seconds) < 10 {
seconds = "0" + seconds
}

self.coinCountdownLabel.text = hour + ":" + minutes + ":" + seconds
self.coinCountdown = self.coinCountdown - 1

let defaults = NSUserDefaults.standardUserDefaults()
if defaults.valueForKey("coinCountdown") != nil {
defaults.setValue(self.coinCountdown, forKey: "coinCountdown")
}

}else{
print("Done! Send notification and show get coin button")
}
}

任何提示将不胜感激。

最佳答案

我实际上还没有做过这样的事情,但我知道如何做到这一点。

当“计时器”应该启动时,您可以安排一个本地静默通知,以提醒应用程序时间已过或事件已触发。

当应用程序收到此计划通知时,它可以运行一些基本检查,以查看自安排通知以来是否发生了可能会取消通知的事件,如果没有,则它可以立即触发本地通知以提醒用户该事件。

请参阅 Local and remote notifications 的文档它甚至引用了“TIMER_EXPIRED”事件,这与我上面的建议类似。

编辑:查看文档,您似乎无法安排静默通知,但理论上这仍然适用于您的情况。

关于ios - 如何在 Swift 游戏中制作前台和后台 2-3 小时计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40359444/

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