簡體   English   中英

iOS應用程序在模擬器中以后台模式工作,但在設備中不工作嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM