Фоновая задача при запуске приостановит приложение после случайного времени

Я работаю над приложением, которое подключается к аксессуару через 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

0 ответов

Другие вопросы по тегам