Push de mostrador do relógio

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:

  1. Todos os mostradores de relógio instalados ou atualizados pela API Watch Face Push precisam passar pela ferramenta de validação Watch Face Push.
  2. Somente a ferramenta de validação oficial pode ser usada para gerar tokens de validação para uso com a API.
  3. A ferramenta de validação usada precisa estar atualizada no momento da validação.
  4. 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

  1. Obtenha o validador do repositório Maven do Google.
  2. 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

  1. 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")
            }
        }
    }
    
  2. 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")
    
    
  3. 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

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:

  1. 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:
    1. Pré-criados como APKs regulares do formato do mostrador do relógio
    2. Cada um deles contém apenas um mostrador do relógio baseado no Formato do mostrador do relógio.
    3. 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.
    4. Pronto para ser recuperado pelo app de smartphone quando necessário.
  2. App Telefone: é a principal forma de interação dos usuários com seu sistema. Com ele, é possível:
    1. Navegar e pesquisar no catálogo de mostradores
    2. Instalar ou substituir um mostrador do relógio
  3. 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:
    1. Usar a API Watch Face Push para instalar/atualizar ou substituir mostradores de relógio
    2. Solicitar as permissões necessárias e pedir ao usuário
    3. Fornecer um mostrador do relógio padrão
    4. Fornecer um cache mínimo de mostradores de relógio
  4. 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:
    1. 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.
    2. Gerenciamento de estado: usando o DataClient ou MessageClient, o smartphone pode ser mantido sincronizado com o estado do relógio. Por exemplo, garantindo que o smartphone saiba qual mostrador está definido.
    3. Transmissão de APK: usando ChannelClient ou MessageClient, os APKs podem ser enviados do smartphone para o relógio.
    4. 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.

Consulte as orientações da API Data Layer para mais detalhes.