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