watchkit - guidelines - watchos 5 documentation



O transferCurrentComplicationUserInfo é mais adequado para a atualização de complicações? (2)

A distinção entre esses dois métodos WCSession envolve quando os dados são enviados e se a extensão do watchkit é ativada ou não.

transferCurrentComplicationUserInfo: é especificamente projetado para transferir informações do usuário de complicações para serem mostradas no mostrador do relógio agora.

  • A informação do usuário de complicação é marcada como "Urgente" e colocada na frente da fila,
  • o relógio ativa a extensão em segundo plano para receber as informações e
  • a transferência acontece imediatamente. (Outras informações na fila também podem ser transferidas nesse ponto.)

transferUserInfo: coloca as informações em fila, para serem transferidas quando o sistema determina que é um bom momento para processar a fila:

  • A informação do usuário é colocada na parte de trás da fila,
  • a informação transferida é armazenada se a extensão não estiver acordada,
  • a transferência não acontece imediatamente, e
  • as informações são entregues na ordem em que foram enviadas.

Mais detalhes podem ser encontrados no vídeo WWDC 2015 Introducing Watch Connectivity .

Atualização para o iOS 10:

No iOS 10, o WCSession adiciona uma propriedade remainingComplicationUserInfoTransfers , que pode afetar o método que o iOS usará para transferir as informações do usuário:

O número de horas restantes que você pode chamar de transferCurrentComplicationUserInfo: durante o dia atual. Se essa propriedade for definida como 0, quaisquer chamadas adicionais para transferCurrentComplicationUserInfo: use transferUserInfo: vez disso.

Se a complicação estiver no mostrador do relógio ativo, você receberá 50 transferências por dia. Se a complicação não estiver ativa, essa propriedade será padronizada como 0.

Qual é a diferença entre transferCurrentComplicationUserInfo e transferUserInfo ?

Eu quero enviar dados do meu AppDelegate para uma complicação de kit de relógio.

transferCurrentComplicationUserInfo parece fazer exatamente a mesma coisa que transferCurrentUserInfo . Estou esquecendo de algo?


Answer #1

Que eu saiba: TransferCurrentComplicationUserInfo tem a mesma funcionalidade que transferCurrentUserInfo quando chamado do delegado app do app pai, no entanto, o TransferCurrentComplicationUserInfo também chama o CLKServer ...... etc para atualizar a complicação. Eu tenho que dizer que eu acho não confiável e estou lutando com TransferCurrentComplicationUserInfo para atualizar meu aplicativo. Nem sempre parece funcionar. A coisa chata é que isso varia entre construir sem alterar o código que tecnicamente não deveria ser possível. Ah bem...