2016-11-07 46 views
-4

即使關閉應用程序並通知用戶,我也希望實現每4小時增加一次生命到UserDefaults.standard.value(forKey: "lifes")的機制。每N小時增加生命

關於通知我閱讀文章,它不會很難。但如果我在12小時內沒有參加比賽,生命值如何提高。返回時,我應該獲得+3的生命。

+0

您可以每隔4小時通過本地通知通知用戶(令人討厭,但是...),並且您可以在應用程序再次打開時立即添加所有生命,計算自上次應用程序以來花費了多少小時打開,你可以做一個「生命+ =小時/ 4」的東西。 – holex

回答

3

當遊戲暫停時(UIApplicationWillResignActive),您會得到一個事件,因此您可以在用戶默認值中記下它是什麼時間。當遊戲繼續時(UIApplicationDidBecomeActive),您會收到一個事件,以便查看它是什麼時間以及自您變爲非活動狀態以來已經過了多少小時。

+0

儘管我尊重上述答案,但建議的解決方案可能會造成破壞性並可能導致災難,因爲您完全依賴設備本地時間。如果用戶將應用程序置於後臺並將時間改爲24小時並再次啓動應用程序,那麼最終會添加+6生命,這是錯誤的,而應該是什麼方法是每次啓動應用程序時都要求服務器關聯時間流逝,並不斷通知服務器關於時間戳在定期間隔時在前臺:)就像聊天應用程序:) –

+0

@SandeepBhandari所以唯一的方式是使用互聯網連接?:(我不想... – Arti

+0

@SandeepBhandari如果發生這種情況,您可以收到來自NSCalendar的日期變更通知,並作出相應補償。 – matt

1

這是不可能的,如果應用程序「關閉」。

實現此行爲的唯一方法是使用推送通知(由您的服務器推送,而不是應用程序推送)。

請參閱thisthis Apple文檔。


我的意見是,用戶將刪除您的應用程序,因爲她會受到太頻繁的通知的干擾。