WKWatchConnectivityRefreshBackgroundTask никогда не запускается в фоновом режиме, но WKSnapshotRefreshBackgroundTask

Я хочу обновить свое приложение для часов в фоновом режиме с iPhone, используяsession.updateApplicationContext(applicationContext).

Отправка контакта приложения, когда приложение на часах активно, работает правильно.
Когда я активирую кнопку «Домой» на часах, приложение часов переходит в фоновый режим,handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>) называется, иWKSnapshotRefreshBackgroundTask предоставлен.

Так что я не понимаю, почемуWKSnapshotRefreshBackgroundTask срабатывает правильно, но неWKWatchConnectivityRefreshBackgroundTask.

Документы Apple сказать "Когда вы получаете фоновые данные от сопряженного iPhone, система запускает ваше приложение в фоновом режиме, создаетWKWatchConnectivityRefreshBackgroundTask объект и передает объект задачи в метод handleBackgroundTasks: вашего делегата расширения.«.

Но этого не происходит ни на устройстве, ни на симуляторе. Что может быть не так?

Редактировать:

Чтобы проверить, что может быть не так, я скачал демонстрационный проект Apple «QuickSwitch», который можно скачатьВот, Вот код, который должен обрабатывать фоновые задачи:

func handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>) {
    for backgroundTask in backgroundTasks {
        if let wcBackgroundTask = backgroundTask as? WKWatchConnectivityRefreshBackgroundTask {
            // store a reference to the task objects as we might have to wait to complete them
            self.wcBackgroundTasks.append(wcBackgroundTask)
        } else {
            // immediately complete all other task types as we have not added support for them
            backgroundTask.setTaskCompleted()
        }
    }
    completeAllTasksIfReady()
}

Там то же самое происходит:
Я установил точку останова в строке оператора if и запустил приложение.
Когда нажата кнопка домой на симуляторе часов, точка останова достигается с помощьюWKSnapshotRefreshBackgroundTask, Это нормально (см. Выше).
Однако, если на симуляторе iPhone выбрана другая строка,watchOS не планируетWKWatchConnectivityRefreshBackgroundTask, как и ожидалось. В конце концов, этот демонстрационный проект должен продемонстрировать именно эту точку.
Может быть, кто-нибудь может попробовать демо-проект и подтвердить эту проблему или нет.

Что случилось?

Ответы на вопрос(2)

Ваш ответ на вопрос