我有一个游戏,我在玩家输了时添加一个计时器,现在是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")
}
}
任何提示都将非常感激。
答案 0 :(得分:0)
我还没有做过这样的事情,但我知道如何做到这一点。
当&#39;计时器&#39;应该开始你可以安排一个本地静默通知,提醒应用程序时间已经过去或事件已被触发。
当应用程序收到此预定通知时,它可以运行一些基本检查,以查看自安排通知以来是否发生任何事情可能会取消它,如果没有,那么它可能会触发立即本地通知以提醒用户该事件。
请参阅Local and remote notifications的文档,它甚至引用了一个事件,其中&#34; TIMER_EXPIRED&#34;这与我上面的建议相似。
编辑:查看文档,看起来您可以安排静默通知,但从理论上讲,这仍然可以适用于您的情况。