Фоновая URL-сессия в watchOS — что такое цикл?

У меня есть класс с делегатами для URLSession. Я намерен использовать его с фоновой конфигурацией. Я понимаю, что обработчики вызываются, когда происходит определенное событие, например didFinishDownloadingTo.

Однако у меня есть функция handle в моем классе ExtensionDelegate:

func handle( _ handleBackgroundTasks:
        Set<WKRefreshBackgroundTask>) 
        // Sent when the system needs to launch the application in the background 
        to process tasks. Tasks arrive in a set, so loop through and process each one.
        for task in handleBackgroundTasks {
             switch task {
                     case let urlSessionTask as WKURLSessionRefreshBackgroundTask:

Интересно: где я должен обрабатывать данные, которые я получаю после загрузки? В didFinishDownloadingTo или в той функции моего класса ExtensionDelegate, в соответствующем случае оператора switch?

Еще вопрос по тому же циклу: везде читал, что надо помнить setTaskCompleted() после прохождения фоновых задач. Но я где-то читал, что не следует устанавливать задачу как выполненную, если запланированная передача данных не завершена. Как мне это проверить?


person francisaugusto    schedule 28.01.2018    source источник


Ответы (1)


Здесь есть очень хорошее объяснение. введите здесь описание ссылки

Это работало, когда у меня был массив с моим WKURLSessionRefreshBackgroundTask. Затем, в конце моего didFinishDownloadingTo, я получаю задачу для этого массива с тем же идентификатором sessionIdentifier, что и текущий session.configuration.identifier, и устанавливаю ее как завершенную.

person francisaugusto    schedule 04.02.2018