Apple Watch em poucas palavras: uma introdução de recursos para desenvolvedores iOS

Publicados: 2022-03-11

Tem havido muita apreensão em torno do Apple Watch SDK, anunciado na WWDC em junho passado e lançado recentemente.

Esta é apenas a primeira rodada, com funcionalidades limitadas. O Apple Watch v2 seguirá, mas não tão cedo - portanto, os desenvolvedores iOS com visão de futuro devem estar preparados para esperar alguns meses.

O sentimento entre os desenvolvedores é extremamente diversificado. Muitos desenvolvedores iOS estão desapontados com muitas limitações impostas pelo Apple Watch SDK e seus recursos. Por outro lado, muitos de nós estão animados, enquanto outros não estão muito longe de uma posição neutra. Mas, afinal, todo mundo está aparentemente feliz por ter um novo brinquedo para brincar.

Uma coisa que chama a atenção é como os usuários do Apple Watch são referidos. Eles não são usuários ou usuários móveis , nem assistem usuários ou (com uma pitada de originalidade) observadores . Eles são simplesmente usuários . Um termo que soa um pouco estranho, porque se um usuário usa , sugerindo que ele interage, um usuário usa , e isso soa como um uso passivo. Claro, o Apple Watch está longe de ser um dispositivo passivo. Ele combina os recursos tradicionais de um relógio com opções mais avançadas habilitadas pela tecnologia moderna, especialmente quando usado em combinação com um iPhone. Não faz muito tempo que os telefones começaram a se tornar muito mais do que apenas telefones - a história está se repetindo.

No entanto, no final, o nome do usuário parece ser uma escolha inteligente. Pelo menos ao escrever histórias de usuários, não preciso especificar “Como usuário do Apple Watch , quero …” na íntegra, posso apenas encurtar para “Como usuário , quero …” - menos ambiguidade.

Os aplicativos do Apple Watch provavelmente mudarão a maneira como os usuários de relógios (e desenvolvedores de aplicativos para iOS) pensam sobre a tecnologia para sempre.

Dispositivo e IU

Omitindo todos os recursos do Apple Watch não estritamente relacionados ao desenvolvimento, os problemas mais importantes com os quais designers e desenvolvedores precisam lidar são os tamanhos - na verdade, existem 2 modelos diferentes de Apple Watch:

  • Tela de 38 mm com resolução de 272 x 340 px
  • Tela de 42 mm com resolução de 312 x 390 px

com uma tela retina em ambos os casos.

Escusado será dizer que cabe aos desenvolvedores do iOS garantir que o aplicativo fique bem em ambas as versões.

Conectividade do Apple Watch

O Apple Watch se comunica com o iPhone complementar via Bluetooth 4.0 e também é habilitado para NFC. Aparentemente, ele não tem conectividade Wi-Fi. Embora possa amarrar através do iPhone e usar conexão de dados Wi-Fi e celular. Mas em uma informação à imprensa, a Apple afirma claramente que também possui Wi-Fi 802.11b/g.

Interação com o usuário

A interação do usuário (ou interação do usuário, se preferir) pode ocorrer de 4 maneiras diferentes:

  • toque simples: um toque em um botão é um exemplo típico
  • force touch: ativado aplicando mais força ao tocar e segurar a tela. Semelhante ao clique com o botão direito do mouse em um PC, ele exibirá um menu contextual (contendo até 4 itens)
  • gesto: deslize vertical para rolar, deslize horizontal para navegar entre as páginas, deslize na borda esquerda para navegar de volta
  • coroa digital: entrada de hardware usada para rolagem ajustada

Existem algumas limitações em relação à interação do usuário, em particular quanto aos gestos:

  • eles são predeterminados, portanto, gestos personalizados não são suportados
  • multitoque não é suportado, portanto, não há pinça para zoom ou gestos semelhantes que exijam mais de um dedo

Aqui está a amostra do menu contextual do Apple WatchKit Guide.

Os recursos do aplicativo Apple Watch inegavelmente exigirão extensos tutoriais de desenvolvimento no futuro. Por enquanto, familiarize-se com o básico.

Interface de usuário

Falando da interface do Apple Watch, existem várias limitações impostas pelo tamanho reduzido da tela, pelas escolhas de design e, em muitos casos, como consequência natural do hardware subjacente. Esperamos que alguns deles mudem para melhor em versões futuras do SDK, embora não seja possível antecipar ou prever o que realmente mudará.

A primeira limitação é sobre como a interface do usuário é implementada: apenas por meio de storyboards.

Navegação do Apple Watch

O WatchKit oferece duas maneiras mutuamente exclusivas de navegar entre as visualizações de um aplicativo Apple Watch:

  • um modelo de navegação hierárquico, semelhante ao usado no iOS, com visualizações empilhadas durante a navegação
  • um modelo baseado em página plana, onde o usuário pode navegar entre as páginas deslizando para a esquerda e para a direita

Infelizmente, não é possível combinar esses dois modelos de navegação no mesmo aplicativo. Um deles deve ser escolhido e utilizado em todo o aplicativo.

No entanto, qualquer controlador de interface pode apresentar um controlador de interface modal, que pode ser um único controlador de interface ou vários controladores de interface, organizados usando um modelo de navegação de página.

Elementos da IU

Existem 11 componentes de interface distintos:

  • botão
  • controle deslizante
  • imagem
  • rótulo
  • separador
  • controle deslizante
  • trocar
  • tabela
  • data: exibindo automaticamente a data ou hora atual
  • cronômetro: exibindo um cronômetro de contagem regressiva, atualizado automaticamente
  • group: um contêiner para um ou mais componentes filhos
  • map: exibindo um mapa não interativo, opcionalmente com no máximo 5 anotações

Layouts

O componente de grupo pode ser usado para combinar elementos de IU do Apple Watch em um layout vertical ou horizontal . Os elementos serão dispostos automaticamente dependendo de seu tamanho. Algum grau de flexibilidade está disponível aqui, dado que os grupos podem ser aninhados.

Infelizmente, o layout automático não está disponível. Mas, considerando que a interface do usuário é muito mais simples em comparação com a versão iOS, provavelmente não é uma grande perda.

Para listas, o componente de tabela cria e gerencia conteúdo usando um modelo de coluna única, assim como o UITableView . No entanto, ele não está usando o padrão de delegação - a fonte de dados é fornecida diretamente à tabela, especificando primeiro o número de linhas e, em seguida, inicializando o conteúdo de cada linha em um loop for. Em uma nota positiva, ainda é possível usar linhas de tabela personalizadas (ou seja, células no jargão do iOS)

Olhares

Os relances são visualizações somente leitura, de página única e não roláveis, usadas para mostrar um instantâneo de dados específicos do aplicativo oportunos e relevantes. Nenhuma interação do usuário é permitida, exceto para o evento de toque. Toque no relance para iniciar o aplicativo, opcionalmente fornecendo um contexto para permitir que o aplicativo exiba um controlador de interface específico.

Por exemplo, um aplicativo de clima do Apple Watch pode usar o Glance para exibir a temperatura atual, localização etc. Ao tocar nele, o aplicativo é aberto, mostrando informações mais detalhadas.

Aqui está o exemplo Glance do guia oficial do Apple WatchKit.

Este é um exemplo do recurso de relance do Apple Watch em um aplicativo Apple Watch de amostra.

Notificações do Apple Watch

Existem 2 tipos de notificação: look curto e look longo .

A notificação de visualização curta é usada para alertar o usuário de que algo aconteceu e é automaticamente descartada quando o pulso é abaixado. O layout é muito simples e consiste no ícone do aplicativo, no nome do aplicativo e no título da notificação.

É assim que uma notificação do Apple Watch pode parecer em um aplicativo.

Manter o pulso levantado por algum tempo ou tocar explicitamente na notificação de visualização curta a transformará em uma notificação de visualização longa . Esse tipo de notificação fornece mais detalhes e oferece suporte à interação do usuário por meio de botões personalizáveis. Esses botões podem enviar notificações para o aplicativo. Ao contrário da notificação curta, o usuário deve dispensar explicitamente uma notificação de visualização longa tocando em um botão que é exibido automaticamente na parte inferior da exibição.

A notificação de aparência longa é um dos recursos distintos do Apple Watch que os desenvolvedores devem conhecer.

Mais informações sobre como usar as Notificações do Apple Watch podem ser encontradas aqui.

Desenvolvimento

Arquitetura

Ao baixar uma versão do Xcode compatível com o WatchKit (atualmente a versão beta 6.2) e tentar iniciar um projeto do WatchKit sem ler nenhuma documentação, um desenvolvedor pode se sentir confuso porque não há um modelo do WatchKit:

Os aplicativos do Apple Watch só podem ser adicionados como um novo destino a um dos seus aplicativos iOS existentes.

Não há aplicativo de observação independente e um aplicativo de observação só pode ser adicionado como um novo destino a um aplicativo iOS existente.

Para desenvolver um aplicativo Apple Watch, comece com seu aplicativo iOS atual e adicione o aplicativo Watch como um novo destino.

A razão para isso está na arquitetura e na maneira como o aplicativo do relógio interage com o aplicativo iOS relacionado:

Compreender a maneira como um Apple Watch interage com outros aplicativos iOS no iPhone é essencial para ser um desenvolvedor bem-sucedido do Apple Watch.

Quando o aplicativo é iniciado no relógio, a extensão complementar do iOS é iniciada automaticamente. Ambos trabalham em sinergia, com o aplicativo do relógio mostrando conteúdo para o usuário e respondendo às interações, enquanto a extensão do iOS faz todo o resto. Na verdade, nenhum código de aplicativo é executado no relógio: todo o processamento é delegado à extensão do iOS.

Esse modelo se assemelha muito ao modelo de aplicativo web do navegador <->, onde a lógica do domínio é executada no lado do servidor e o lado do cliente é responsável por mostrar o conteúdo ao usuário e responder às ações do usuário.

O Watch App, que está instalado no dispositivo, consiste no storyboard e todos os recursos estáticos relacionados, embalados em um pacote. Este pacote é estático, o que significa que adicionar ou alterar qualquer um dos recursos, visualizações, imagens etc. não é possível em tempo de execução.

Esse modelo cliente-servidor estático impõe várias limitações ao desenvolvedor iOS que deseja adicionar um aplicativo Watch ao seu repertório, e provavelmente é uma das principais razões pelas quais alguns desenvolvedores não reagiram positivamente. Outra observação popular é sobre animações: elas simplesmente não são suportadas. A única maneira de imitar uma animação é empacotar quadros individuais no aplicativo do relógio e simular a animação exibindo imagens em uma sequência. A boa notícia é que ao nomear os quadros sequencialmente você pode automatizar a animação diretamente do Interface Builder, embora o mesmo possa ser feito a partir do código com uma única invocação de um método de controle de imagem.

No entanto, a Apple já anunciou que uma nova versão será lançada algumas vezes no próximo ano, com suporte para aplicativos nativos, para os quais ainda não há mais detalhes.

A estrutura do Apple Watch: uma olhada rápida

O WatchKit não usa, herda ou especializa o UIKit. Uma nova estrutura foi implementada, projetada especificamente e otimizada para o relógio, para sua pequena tela e para o hardware limitado. A estrutura consiste em apenas 15 classes, 12 das quais são componentes de interface do usuário (rótulo, botão, etc.).

A classe mais importante exposta pela estrutura é WKInterfaceController , que é a contraparte WatchKit de UIViewController . Então, o que no iOS (e OSX) é chamado de controlador de visualização , no Apple Watch é um controlador de interface .

Sem se aprofundar muito, a melhoria mais notável em relação ao UIKit, do ponto de vista de um desenvolvedor da Apple, é o estabelecimento de um padrão para passar dados entre controladores de interface. Uma rápida olhada no inicializador:

Swift init(context: AnyObject?) // context from pushing controller or nil

revela que é possível fornecer um objeto arbitrário para uma instância do controlador de interface (chamada de context em todas as APIs), simplificando e padronizando a passagem de dados de um controlador de interface para outro. A única desvantagem é que o objeto não é de um tipo genérico, mas um AnyObject opaco que deve ser downcast para o tipo esperado dentro do inicializador do controlador de interface de destino. Isso é provavelmente uma troca por ainda ter (e provavelmente também querer) continuar usando o Objective C.

O ciclo de vida do controlador de interface é simplificado se comparado com a contrapartida do controlador de visualização, consistindo em apenas 3 transições:

  • init : invocado quando o objeto é instanciado
  • willActivate : invocado quando o conteúdo está prestes a ser exibido
  • didDeactivate : invocado quando a interface acabou de ser ocultada

Além de mostrar o conteúdo ao usuário, o controlador de interface também é responsável por:

  • lidar com interações do usuário
  • gerenciar um menu contextual
  • coordenar a atividade de transferência
  • responder à notificação

O Apple WatchKit está pronto?

Com as várias limitações, o kit de relógio pode parecer um produto imaturo. E na realidade é. Ele não suporta aplicativos de relógio nativos, sem mencionar que ainda não há dispositivo de relógio no mercado, então os desenvolvedores ainda não conseguem testar seus aplicativos e ter uma sensação real e feedback de como o aplicativo funciona.

Ok, existe um simulador, que na verdade não é um simulador independente, mas acessível como um monitor externo ao simulador iOS (através do menu Hardware -> Monitores Externos). Mas um simulador nunca substitui um dispositivo real - bom durante o desenvolvimento e para depuração, mas não o suficiente.

O WatchKit é apenas uma prévia, uma versão beta, um aperitivo, que vai evoluir a cada novo lançamento. Os desenvolvedores do iOS têm a primeira versão, vamos brincar com ela e tentar tirar o máximo proveito dela.