O WKWatchConnectivityRefreshBackgroundTask nunca é acionado em segundo plano, mas o WKSnapshotRefreshBackgroundTask

Quero atualizar o estado do meu aplicativo de relógio em segundo plano no iPhone, usandosession.updateApplicationContext(applicationContext).

Enviar um contato do aplicativo enquanto o aplicativo no relógio está ativo funciona corretamente.
Quando ativo o botão "Início" no relógio, o aplicativo de relógio fica em segundo plano,handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>) é chamado e umWKSnapshotRefreshBackgroundTask é fornecido.

Então eu não entendo por queWKSnapshotRefreshBackgroundTask é acionado corretamente, mas não umWKWatchConnectivityRefreshBackgroundTask.

Documentos da Apple diga „Quando você recebe dados em segundo plano do iPhone emparelhado, o sistema inicia seu aplicativo em segundo plano, instancia umWKWatchConnectivityRefreshBackgroundTask objeto e passa o objeto de tarefa ao método handleBackgroundTasks: do delegado de extensão.".

Mas isso não acontece, nem em um dispositivo, nem no simulador. O que pode estar errado?

Editar:

Para verificar o que pode estar errado, baixei o projeto de demonstração da Apple "QuickSwitch", que pode ser baixadoaqui. Aqui está o código que deve lidar com tarefas em segundo plano:

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()
}

Aí acontece o mesmo:
Eu configurei um ponto de interrupção na linha da instrução if e executei o aplicativo.
Quando o botão home no simulador de relógio é pressionado, o ponto de interrupção é alcançado com umWKSnapshotRefreshBackgroundTask. Isso está bom (veja acima).
No entanto, se uma linha diferente for selecionada no simulador do iPhone,O watchOS não agenda umaWKWatchConnectivityRefreshBackgroundTask, como esperado. Afinal, este projeto de demonstração deve demonstrar exatamente esse ponto.
Talvez alguém possa experimentar o projeto de demonstração e confirmar esse problema ou não.

O que está errado?

questionAnswers(2)

yourAnswerToTheQuestion