Я делаю приложение, которое полагается на таймер, который срабатывает каждую минуту, чтобы изменить ярлык от «x минут осталось» до «(x-1) минут влево. В принципе, это уменьшает число каждую минуту. Мне нужен таймер для работы, даже когда я закрываю приложение (не полностью, просто нажмите на главный экран и оставьте его в фоновом режиме), так что когда пользователь вернется в приложение, оставив его в фоновом режиме для 5 минут, на этикетке будет указано «(x-5) минут осталось».Сохранение таймеров при запуске приложения
Прямо сейчас, когда я запускаю его в симуляторе, он работает отлично, но когда я запускаю его на своем телефоне, он не работает. приложение открыто на моем телефоне, оно работает, но если приложение работает в фоновом режиме, метка никогда не уменьшается. Может ли это быть связано с различиями в том, как Simulato r и фактическая многозадачность для iPhone? Если да, то как я могу изменить свой код, чтобы таймер все равно обновлял метку каждую минуту, чтобы отобразить правильный номер, когда пользователь снова открывает приложение?
Вот моя установка таймера:
var individualTaskTimer = NSTimer()
func createTimerForTopTask(){
individualTaskTimer = NSTimer.scheduledTimerWithTimeInterval(tasks[0].minutes * 60, target: self, selector: "deleteTopTask", userInfo: nil, repeats: true)
}
Это не обязательно решение, но Оле Бегеманн писал на высоком уровне о том, как приложения будильника работают с многозадачностью на iOS. http://oleb.net/blog/2014/02/alarm-clock-apps-ios/ –
Время работы iOS Simualtor между 8.0 и 11.0 Beta 2 не может приостанавливать приложения, когда они входят в фоновый режим. iOS 11.0 Beta 3 Simulator (входит в Xcode 9.0 Beta 3) решает эту проблему. Приложения, которые были созданы, должны быть надлежащим образом приостановлены для лучшего соответствия поведения устройства. –