Фоновая задача при запуске приостановит приложение после случайного времени
Я работаю над приложением, которое подключается к аксессуару через Bluetooth, и я реализовал сохранение и восстановление состояния, если приложение аварийно завершило работу, чтобы восстановить соединение в фоновом режиме.
Когда приложение вылетает / закрывается iOS через jetsamevent
, он будет возобновлен снова и в didFinishLaunchingWithOptions
метод, я реализовал фоновую задачу, чтобы дать приложению больше времени для повторного подключения к предыдущему периферийному устройству, это даст приложению ~3 минуты сканирования на периферийное устройство.
Вот код, который я использую для запуска и завершения фоновой задачи:
var backgroundTask: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid
func registerBackgroundTask() {
backgroundTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler {
[unowned self] in
self.endBackgroundTask()
}
}
func endBackgroundTask() {
UIApplication.sharedApplication().endBackgroundTask(backgroundTask)
backgroundTask = UIBackgroundTaskInvalid
}
Я зову registerBackgroundTask
при запуске (в didFinishLaunchingWithOptions
)
Проблема в том, что в какой-то момент endBackgroundTask
вызывается, и приложение (кажется) переходит в состояние ожидания и снова возвращается в фоновое состояние через произвольное время, иногда через 3 минуты, 15 минут или 3 часа.
Примечание. Я использовал документацию Apple для реализации сохранения и восстановления состояния, раздел State Preservation and Restoration