O Wear OS 6 apresenta uma nova API, o Watch Face Push, que cria oportunidades para casos de uso de publicação de mostradores de relógio mais avançados.
Identificar quando usar o envio de mostrador do relógio
O Watch Face Push é uma API no Wear OS que permite ao desenvolvedor adicionar, atualizar ou remover mostradores de relógio diretamente. Não é necessário para o desenvolvimento padrão de mostradores de relógio.
Os mostradores de relógio usados com o Watch Face Push precisam ser escritos usando o Formato do mostrador do relógio. Isso pode incluir mostradores de relógio criados com o Watch Face Studio ou qualquer outra ferramenta que produza mostradores de relógio usando o Formato do mostrador do relógio.
Embora a API Watch Face Push possa ser usada de várias maneiras, a tabela a seguir deve ser usada como um guia para os principais casos de uso:
Caso de uso | Solução recomendada | Complexidade |
---|---|---|
Quero criar e publicar mostradores de relógio individuais. | Use o Formato do mostrador do relógio, seja diretamente ou com uma ferramenta como o Watch Face Studio, e publique no Google Play. | Baixo |
Quero criar um app para smartphone que permita aos usuários selecionar mostradores de relógio de uma coleção selecionada ou criar e personalizar mostradores para instalação diretamente no relógio Wear OS. | Crie um app para relógio e smartphone usando a API Watch Face Push no relógio. | Alta |
Finalidade
O caso de uso canônico da API Watch Face Push é a criação de um app de marketplace. Com ele, os usuários podem selecionar mostradores de relógio de uma coleção organizada no smartphone e controlar diretamente a instalação desses mostradores no smartwatch conectado.
Considerações
Para detalhes sobre como criar mostradores de relógio, consulte as orientações do Formato do mostrador do relógio: os mostradores implantados usando o Watch Face Push são mostradores regulares do Formato do mostrador do relógio.
Ao criar o mostrador do relógio, tenha em mente as seguintes considerações.
Nomes de pacote
Os mostradores de relógio instalados usando o Watch Face Push precisam obedecer à seguinte convenção:
<app name>.watchfacepush.<watchface name>
... em que <app name>
é o nome do pacote do app que chama a API
Push de mostrador do relógio.
Por exemplo, para um app com o nome do pacote com.example.mymarketplace
, os
seguintes são nomes de pacote de mostrador de relógio válidos:
com.example.mymarketplace.watchfacepush.watchface1
com.example.mymarketplace.watchfacepush.watchface2
com.example.mymarketplace.watchfacepush.another_watchface
Os mostradores do relógio que não seguem essa convenção são rejeitados pela API.
Conteúdo do pacote
O conteúdo do APK é aplicado de forma estrita. É necessário tomar cuidado para garantir que o formato do mostrador do relógio esteja de acordo com as seguintes restrições: é tecnicamente possível produzir APKs do formato do mostrador do relógio que contenham arquivos de metadados inofensivos e outros artefatos, o que pode ser aceitável para o Google Play, mas não passa na validação por push do mostrador do relógio (veja abaixo).
Somente os seguintes arquivos/caminhos são aceitáveis em cada APK de mostrador do relógio:
/AndroidManifest.xml
/resources.arsc
/res/**
/META-INF/**
Além disso, apenas as seguintes tags são permitidas no arquivo
AndroidManifest.xml
:
<manifest>
<uses-feature>
<uses-sdk>
<application>
<property>
<meta-data>
Por fim, o pacote precisa especificar um minSdk
de pelo menos 33
, e a
tag <application>
precisa especificar o atributo android:hasCode="false"
.
Validação
Ao contrário dos mostradores de relógio comuns distribuídos pelo Google Play, as verificações do Watch Face Push para garantir que cada mostrador esteja bem formado e tenha boa performance são de responsabilidade do app Marketplace.
O Google Play usa as seguintes verificações de validação para verificar a qualidade de cada mostrador do relógio que usa o envio por push de mostradores:
- Todos os mostradores de relógio instalados ou atualizados pela API Watch Face Push precisam passar pela ferramenta de validação Watch Face Push.
- Somente a ferramenta de validação oficial pode ser usada para gerar tokens de validação para uso com a API.
- A ferramenta de validação usada precisa estar atualizada no momento da validação.
Não é necessário validar novamente um APK que não foi alterado. Os tokens não expiram, mesmo quando a versão da ferramenta de validação usada é substituída.
Ao mesmo tempo, recomendamos que você execute a validação de novo de vez em quando, porque o validador é atualizado periodicamente.
Executar o validador
O validador está disponível de três formas:
- Uma ferramenta de CLI
- Uma biblioteca para uso com a JVM.
- Uma biblioteca para uso no Android.
Uso do validador de linha de comando
- Obtenha o validador do repositório Maven do Google.
Execute a ferramenta da seguinte maneira:
java -jar validator-push-cli-1.0.0-alpha06.jar \ --apk_path=<your watch face>.apk \ --package_name=<your marketplace package name>
Se a solicitação for bem-sucedida, a saída vai incluir um token de validação, que você precisa fornecer à API Watch Face Push ao adicionar ou atualizar um mostrador do relógio.
Se ocorrer um erro, a saída vai incluir detalhes sobre qual verificação específica falhou.
Uso do validador de biblioteca
Inclua o repositório Jitpack, necessário para a dependência do validador:
repositories { ... google() maven { url = uri("https://jitpack.io") content { includeGroup("com.github.xgouchet") } } }
Inclua a dependência do validador no seu projeto:
// For use on JVM implementation("com.google.android.wearable.watchface.validator:1.0.0-alpha06") // For use on Android implementation("com.google.android.wearable.watchface.validator-android:1.0.0-alpha06")
Execute o validador:
val validator = DwfValidatorFactory.create() val result = validator.validate(watchFaceFile, appPackageName) if (result.failures().isEmpty()) { val token = result.validationToken() println("Validation token: $token") // Validation success - continue with the token // ... } else { // There were failures, handle them accordingly - validation has failed. result.failures().forEach { failure -> println("FAILURE: ${failure.name()}: ${failure.failureMessage()}") // ... } }
Para um exemplo de como usar essa biblioteca, consulte a amostra do GitHub. Consulte também a biblioteca Portable Asset Compiler Kit (Pack), útil para criar APKs no dispositivo e usar com o validador baseado em Android.
Tamanho do APK
É preciso ter cuidado especial com os mostradores de relógio Watch Face Push para garantir que o tamanho do APK seja mantido no mínimo: o APK do mostrador de relógio provavelmente será transmitido do app para smartphone para o app para smartwatch por Bluetooth, o que pode ser lento.
Um APK muito grande pode levar um tempo considerável para ser transmitido, o que é uma experiência ruim para o usuário e também consome a bateria.
- Use bibliotecas adequadas, como
pngquant
, para manter o tamanho dos arquivos de imagem no mínimo- Inclua isso no processo de criação da sua coleção de mostradores de relógio
- Verifique se as dimensões da imagem são adequadas para a escala em que ela será usada.
- Corte as imagens adequadamente para remover o plano de fundo.
- Reduza o tamanho dos arquivos de fontes
- Por exemplo, se você estiver usando uma fonte específica apenas para mostrar a hora no formato
HH:MM
, use uma ferramenta comopyftsubset
para limitar o arquivo de fonte a conter apenas os glifos necessários. Isso pode reduzir drasticamente o tamanho do arquivo de fonte e do APK resultante. Consulte esta postagem do blog para detalhes sobre como minimizar o tamanho do arquivo de fonte em outros casos.
- Por exemplo, se você estiver usando uma fonte específica apenas para mostrar a hora no formato
Consulte as orientações para otimizar o uso da memória e confira mais sugestões sobre como manter o tamanho do APK no mínimo.
Assinatura de APKs
Como um APK normal, todos os mostradores de relógio precisam ser assinados. Crie uma chave diferente da usada com seu app principal e use essa chave para todos os mostradores de relógio.
Arquitetura
Considere os três componentes principais do sistema:
- Armazenamento baseado na nuvem: no app canônico do Marketplace, os mostradores do relógio
são criados e armazenados na nuvem, prontos para uso pelos usuários. As opções de
mostrador do relógio são:
- Pré-criados como APKs regulares do formato do mostrador do relógio
- Cada um deles contém apenas um mostrador do relógio baseado no Formato do mostrador do relógio.
- Foram validados usando o processo de validação por push do mostrador do relógio e são armazenados com o token de validação associado.
- Pronto para ser recuperado pelo app de smartphone quando necessário.
- App Telefone: é a principal forma de interação dos usuários com seu sistema. Com ele, é possível:
- Navegar e pesquisar no catálogo de mostradores
- Instalar ou substituir um mostrador do relógio
- App para smartwatch: geralmente, o app para smartwatch não tem uma interface do usuário significativa. Ela é principalmente uma ponte entre o app para smartphone e as APIs
Push de mostrador do relógio, com a seguinte funcionalidade:
- Usar a API Watch Face Push para instalar/atualizar ou substituir mostradores de relógio
- Solicitar as permissões necessárias e pedir ao usuário
- Fornecer um mostrador do relógio padrão
- Fornecer um cache mínimo de mostradores de relógio
- Comunicações entre smartphone e relógio: a comunicação entre o smartphone e o app para relógio é
fundamental para o sucesso da experiência geral. Use as APIs da camada de dados do Wear OS, que permitem:
- Detecção de instalação: usando recursos e o
CapabilityClient
, o app para smartphone pode detectar a ausência do app para smartwatch e vice-versa. Isso pode ser seguido pelo lançamento de uma intent para a Play Store e instalação do formato ausente. - Gerenciamento de estado: usando o
DataClient
ouMessageClient
, o smartphone pode ser mantido sincronizado com o estado do relógio. Por exemplo, garantindo que o smartphone saiba qual mostrador está definido. - Transmissão de APK: usando
ChannelClient
ouMessageClient
, os APKs podem ser enviados do smartphone para o relógio. - Invocação remota: usando o
Messageclient
, o smartphone pode instruir o relógio a chamar a API Watch Face Push, por exemplo, para instalar um mostrador do relógio.
- Detecção de instalação: usando recursos e o
Consulte as orientações da API Data Layer para mais detalhes.