[英]iOS app works in background mode in simulator but not in device?
我正在編寫一個時間跟蹤應用程序,它可以在模擬器中完美運行。 我在9:00按開始,鎖定屏幕,在9:05回來,計時器調整為5分鍾。 但是,在我的實際設備上,后台沒有任何反應。 是什么原因造成的?
這是我的后台模式代碼。 我還檢查了目標功能中的后台模式。
進入背景模式時,找到日期以計算背景時間。
func appGoesIntoBackground() {
if isActivityPaused == false {
quitDate = NSDate()
}
}
從后台加載后,計算它在后台運行多長時間並顯示出來。
func appLoadedFromBackground() {
if isActivityPaused == false {
let passedSecondsTillInactive =
NSDate().timeIntervalSinceDate(quitDate!)
passedSeconds += Int(passedSecondsTillInactive)
}
}
保存到歷史記錄。 如果我切掉startDate = nil並選擇了nActivity = nil,則在模擬器中將無法使用。
func saveActivityToHistory() {
CoreDataHandler.sharedInstance.saveHistory(choosenActivity!.name!,
startDate: startDate!, endDate: NSDate(), duration: passedSeconds)
startDate = nil
choosenActivity = nil
passedSeconds = 0
loadCoreDataEntities()
}
在這種情況下,我看不到任何背景模式的原因。 我建議您以其他方式將quitDate保留為userDefaults,plist文件或Core Data。 這樣,應用程序進入后台后發生什么情況都無關緊要,無論持續多久也無關緊要。 您在喚醒后從持久數據中檢索退出日期,然后按預期進行。
介於8.0和11.0 Beta 2之間的iOS Simualtor運行時無法暫停后台任務。 從iOS 11.0 Beta 3 Simulator(它是Xcode 9.0 Beta 3的一部分)開始,此問題已得到解決。 后台運行的應用程序應適當地暫停以更好地匹配設備行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.