[MÚSICA] Fala,
pessoal, tudo bem?
Nesta aula vamos ver pouco sobre as Complicações do Apple Watch.
Complicações são informações breves que aparecem na tela do Apple Watch enquanto o
usuário não está usando nenhum aplicativo ou alguma funcionalidade qualquer.
Para você entender melhor do que estamos falando,
escolha o simulador do Complication e rode o seu aplicativo.
Nada aconteceu, certo?
Exatamente porque a tela de Complicações é esta mesma, a tela que mostra o relógio.
Se você simular First Touch, o simulador permite que você customize esta tela com
algumas informações já predefinidas, como previsão do tempo, calendário e alarmes.
Também é possível mudar o layout do seu relógio,
basta que você clique e arraste para os lados.
Em nossa aula vamos usar o layout
Modular, então já vamos escolher este layout para facilitar.
Temos também que definir em nosso projeto os
tipos de famílias de layout que vamos usar.
Para isso, clique em seu projeto,
depois em WatchKit Extension e deixe marcada apenas a opção de Modular Large.
Agora vamos abrir o Complication Controller.
Reparem que há diversas e diferentes funções.
Não se preocupe, vamos aprender para que servem algumas delas durante esta aula.
Uma característica importante do Complications é que ele funciona como uma
linha do tempo.
Dessa forma, diferentes informações podem ser apresentadas ao longo do dia.
Você vai entender melhor como isso funciona logo logo.
Para começar, vamos modificar algumas funções para facilitar nossa aula.
Na função getSupportedTimeTravelDirectionsForCompli-
cation vamos deixar apenas .Forward.
Isso indica que vamos tratar apenas de eventos futuros.
Na função getTimelineStartDateForComplication,
que estabelece a data de início de nossa linha do tempo, vamos passar a data atual.
Na função abaixo, getTimelineEndDateForComplication,
que estabelece a data de encerramento de nossa linha do tempo,
vamos passar o valor de 24 horas a partir da data atual.
Agora vamos criar template para as informações que vamos usar.
Este template serve para exemplificar ao usuário que tipo de informação
ele irá visualizar caso escolha usar a nossa Complicação.
Para isso, temos que definir os elementos de nosso
template na função getPlaceholderTemplateForComplication.
Nesta função definimos que vamos usar a família Modular Large.
Esta família contém header e dois corpos de texto.
O header apresenta o intervalo de tempo e os corpos vão apresentar
nome de prato e uma mesa de nosso restaurante imaginário.
Se você rodar seu aplicativo no simulador de Complications,
já é possível visualizar estas informações que providenciamos nesta última função.
Para isso, use o First Touch em seu simulador.
Agora arraste até ao template Modular e clique em Customize.
Arraste novamente para a direita e no campo do meio deslize para
baixo ou para cima com o seu mouse ou trackpad até encontrar as
informações referentes ao seu aplicativo.
Agora use novamente o First Touch e depois escolha o template Modular mais uma vez.
Caso as informações não apareçam corretamente, não tem problema,
este é bug do simulador e pode ocorrer.
Vamos agora providenciar informações mais detalhadas em nossa tela de Complicações.
No Complication Controller vamos criar uma estrutura para apresentar nossos dados.
Nesta estrutura temos o nome do prato, sua abreviação e a mesa que fez o pedido.
Também temos o tempo que o pedido foi feito e o tempo que ele demora para ficar
pronto.
Precisamos definir mais duas variáveis.
Para facilitar vamos definir o valor de uma hora através do elemento Hour.
Agora vamos montar nosso array usando os valores de nossa estrutura.
Definimos alguns nomes de pedidos e alguns números de mesas.
Também usamos diferentes valores para Start Date e Length.
Assim veremos os elementos na linha do tempo em diferentes momentos.
Agora precisamos definir qual é a informação que primeiro
será mostrada em nossa tela.
Para isso devemos utilizar a função getCurrentTimelineEntryForComplication.
Novamente definimos template do tipo Modular Large e preenchemos seus
campos com as informações referentes ao primeiro elemento de nosso array Dishes.
Vamos rodar novamente o nosso aplicativo.
Como você pode notar,
as informações exibidas são referentes ao primeiro elemento de nosso array.
Agora precisamos preencher a nossa linha do tempo com mais alguns elementos para
que possamos mostrar novo recurso do Apple Watch chamado TimeTravel.
Para isso precisamos passar estes elementos para
a função getTimelineEntriesForComplication.
Repare que há duas funções com este nome.
Nesta aula vamos utilizar a função que exibe os elementos após o tempo
especificado, ou seja, aquela que tem o
parâmetro afterDate.
Primeiro criamos vetor vazio de entradas na linha do tempo.
Para cada elemento do vetor Dishes,
verificamos se o vetor de entradas ainda não atingiu o limite de elementos.
Isso é importante para que não ultrapasse
o limite de elementos que podem ser armazenados no cache do relógio.
Também verificamos se o elemento vai ser adicionado depois da data atual.
Como estamos lidando com uma linha do tempo que trata apenas de eventos futuros,
não nos importa colocar elemento passado.
Por fim, como em outras funções,
definimos o template Modular Large e atribuímos valores aos seus elementos.
Vamos rodar o aplicativo e ver o resultado.
Novamente o primeiro elemento será exibido,
porém, se você quiser ver os elementos futuros, basta deslizar o botão do
mouse ou o trackpad para cima no movimento que simula a coroa do Apple Watch.
Você pode notar que aparece escrito TimeTravel.
Este recurso permite a você viajar pela sua linha do tempo e ver quais
eventos estão previstos durante seu dia.
Bom, esta aula fica por aqui.
Espero que você tenha gostado desta funcionalidade do Apple Watch.
Nas próximas aulas veremos ainda mais recursos.
Até lá!