[MÚSICA] Fala pessoal! Tudo bem? Nesta aula, vamos ver uma maneira simples de trocar informações entre o Apple watch e o Iphone. Para os nossos fins nesta aula, vamos imaginar que o nosso app será usado por garçom, ou uma garçonete, que recebe pedidos dos clientes por meio dos Iphones. Esses pedidos chegarão, então, no Apple watch do garçom ou da garçonete, que poderá responder ao cliente sobre o seu pedido. Vamos então começar a montar essa funcionalidade nosso aplicativo. Para isso, vamos usar o 'Watch Connectivity', uma ferramenta que foi lançada há pouco tempo junto com o novo Watch OS 2. Sem enrolação, vamos começar utilizando a já criada 'Info Interface Controller'. Vamos utilizar a label já criada para receber o pedido do usuário. Renomeie o seu texto para "Pedido do usuário", agora, precisamos de botão para enviar a resposta do garçom sobre o pedido do cliente. Vamos arrastar botão para a nossa tela e criar a sua função de ação. [SEM_AÚDIO] Para que nossa tela fique mais organizada, vou renomear o texto do botão para resposta e colocar separador entre o label e o botão. Vamos então definir a função desse botão. Vou aproveitar para mostrar recurso muito legal do Watch, chamado "Text Input Controller". Com esta funcionalidade, podemos apresentar respostas pré-definidas ao usuário. Através do 'Input Mode' é possível definir que tipo de resposta o usuário pode escolher. Podemos disponibilizar uma lista de emoticons estáticos, emoticons animados e o uso do microfone. Para esta aula, vamos deixar disponíveis apenas texto e emoticons estáticos. Para isso, vamos utilizar o 'Input allow emoji'. Quando o usuário escolhe uma resposta, ela é passada a variável 'choice' que e recebida pelo texto do botão. Mas nossa função ainda não envia a resposta para o Iphone. Para que possamos transferir a informação entre o Watch e o Phone, precisamos deixar claro para o nosso aplicativo o modo como vamos fazê-lo. Vamos, então, importar o framework do Watch Connectivity para que possamos utilizar suas ferramentas. Agora precisamos avisar ao nosso 'Info Interface Controller' que vamos usar o 'WC Session Delegate', para que possamos abrir canal de troca de informações, chamado de sessão. Vamos então iniciar uma sessão. Aqui, estamos verificando se podemos iniciar uma sessão nesta 'Interface Controller'. Caso a resposta seja positiva, iniciamos uma sessão padrão, cujo o delegate é o 'WC Session Delegate'. E, por fim, ativamos nossa sessão. Agora que a conexão entre os dispositivos está quase pronta, precisamos definir a função que envia uma string, como resposta, para o Iphone. Nesta função 'Send Answer', passamos a string que será enviada ao Iphone através da 'Info Session'. Para isso, a resposta será enviada como dicionário para a função 'Update Application Context' do Iphone. Precisamos agora voltar a função de nosso botão e dizer para ela enviar a resposta escolhida como uma string para a função 'Send Answer'. Pronto. Tudo preparado nosso código para o garçom responder ao cliente. Agora, é só rodar o app e ver o resultado. Certo? Ainda não. Precisamos preparar o outro lado desta interação. O cliente precisa antes enviar uma mensagem de seu Iphone ao Watch do garçom. Vamos então trabalhar rapidamente na storyboard do Iphone. Aqui vamos precisar de apenas três elementos: label, text field e botão. [SEM_AÚDIO] [SEM_AÚDIO] [SEM_AÚDIO] [SEM_AÚDIO] [SEM_AÚDIO] [SEM_AÚDIO] [SEM_AÚDIO] [SEM_AÚDIO] [SEM_AÚDIO] Aproveite para declarar as propriedades desses três elementos e organizar suas informações iniciais. [SEM_AÚDIO] Também já declare a função de ação do botão porque vamos utilizá-lo logo logo. [SEM_AÚDIO] Nesta 'View Controller' temos que repetir alguns passos que já fizemos na Interface Controller do Watch. Precisamos importar o Watch Connectivity e precisamos declarar o 'WC Session Delegate'. Também precisamos declarar uma sessão e iniciá-la no 'View Did Load'. Por fim, precisamos declarar a função que recebe a resposta enviada como dicionário. A função recebe o contexto passado pela watch e a variável 'Wait Answer' recebe esse contexto como string. Por fim, o label recebe essa string. Já podemos rodar nosso app e ver o resultado. Rode primeiro o simulador do Watch e do Iphone logo seguida. [SEM_AÚDIO] [SEM_AÚDIO] Se você selecionar uma resposta no Watch, ela será instantâneamente passada para o Iphone. [SEM_AÚDIO] Agora digite pedido no Iphone e veja se acontece algo no Watch! [SEM_AÚDIO] Não acontece nada, certo?! Isso porque ainda não fizemos o caminho inverso. E é exatamente isso que precisamos fazer. Do mesmo modo que no Watch, precisamos enviar texto do text field para uma função que vai enviar esse texto para o Watch. Vamos declarar então essas funções. Essas duas funções apresentam o mesmo modo de operar daquelas que usamos no Watch. O que nos falta fazer agora é receber esta informação no watch. Para isso, basta que declaremos uma função 'session' da mesma forma que fizemos no Iphone. Basta dizer para o label receber a informação e estamos prontos para testar nosso aplicativo. Rode novamente o app nos dois simuladores e teste a troca de informações entre os dois devices. [SEM_AÚDIO] [SEM_AÚDIO] Como você pode ver a conexão do Watch Connectivity é uma forma relativamente simples de trocar informações entre o Watch e o Iphone. Espero que você tenha gostado demais desta aula. Nas próximas aulas, veremos mais recurso interessante do Apple Watch. Até lá!