Convite para atualização do Android

Upgrade Invite é um fluxo de usuário que mostra os principais novos recursos incluídos na principal atualização disponível do sistema operacional Android.

O objetivo do fluxo é ajudar a convencer os usuários a atualizar seus dispositivos para a versão mais recente do sistema operacional.

Depois que um dispositivo tiver uma atualização do sistema operacional pendente de aprovação do usuário, os usuários receberão uma notificação por push exibindo os novos recursos e convidando-os a realizar a atualização.

Para ativar o convite de atualização para seus dispositivos, registre-se usando o formulário Solicitação para ativar o convite de atualização do Android .

Personalize a experiência do convite de upgrade

Você pode personalizar a experiência do convite de upgrade das seguintes maneiras:

  • Remova recursos irrelevantes.
  • Atualize o idioma nos blocos de texto.
  • Modifique as animações, cores e fontes para combinar com sua marca.

Para personalizar o fluxo, revise as diretrizes no Guia de estilo de convite de atualização e inclua suas informações de personalização no formulário Solicitação para ativar o convite de atualização do Android .

Atualizar guia de estilo de convite

Use este guia de estilo para modificar a aparência do Upgrade Invite para se adequar à sua própria marca (telas, cores, fontes). É altamente recomendável manter os tamanhos e a estrutura próximos ao projeto original.

O fluxo de convite de atualização apresenta os três componentes a seguir:

  • tela de introdução
  • Tela de recursos
  • tela Outro
Figura 1. Os três tipos de tela no fluxo de convite de atualização

Uma animação em cada tela ajuda a explicar cada recurso.

tela de introdução

A tela de introdução contém uma pequena animação que dá as boas-vindas ao usuário e o encoraja a iniciar o fluxo mostrado na tela de introdução.

Disposição
Figura 2. Layout de estrutura de arame para a tela de introdução do convite de atualização

A animação do dispositivo sempre consiste em:

  • Fundo branco e formas coloridas
  • Estrutura do dispositivo
  • conteúdo da interface do usuário
Estilo

Se você optar por adaptar o estilo do Material You , poderá usar as cores e formas padrão mostradas no exemplo.

Figura 3. Esquema de cores padrão para o fluxo de convite de atualização.

Se você usar sua própria cor de marca, verifique se ela funciona bem com o plano de fundo da interface do usuário.

Movimento

Opção 1: Com um relógio na tela inicial

  1. Os números entram na tela.
  2. Os números se movem para o centro enquanto diminuem de tamanho. A moldura do telefone móvel aparece.
  3. O telefone diminui de tamanho. As formas começam a entrar na tela.
  4. A animação está concluída. As formas continuam se movendo suavemente.
Figura 4. Layout de estrutura de arame para a animação da tela de introdução do Upgrade Invite com um relógio.
Figura 5. Exemplo de animação para a tela de introdução com um relógio.

Opção 2: sem relógio na tela inicial

  1. O celular entra na tela.
  2. O telefone se move para o centro enquanto aumenta de tamanho. As formas começam a entrar na tela.
  3. O telefone atinge o tamanho máximo e as formas continuam em movimento.
Figura 6. Layout de estrutura de arame para a animação da tela de introdução do Upgrade Invite sem um relógio.
Figura 7. Exemplo de animação para tela de introdução sem relógio.

Tela de recursos

Cada tela de recurso destaca um recurso no novo sistema operacional.

Disposição
Figura 8. Layout de wireframe para as telas do recurso Upgrade Invite.

A animação do dispositivo sempre consiste em:

  • fundo colorido
  • Estrutura do dispositivo
  • conteúdo da interface do usuário
Estilo
  • Escolha uma cor de fundo que funcione bem com o conteúdo da IU e com a aparência geral.
  • Dentro das telas, defina tamanhos de fonte que sejam facilmente legíveis. Se necessário, defina tamanhos de fonte maiores.
Movimento

Grave uma animação do fluxo de cada recurso, incluindo interações de toque. Exporte as gravações como arquivos Lottie .

tela Outro

A tela finaliza o fluxo. Ele indica aos usuários que eles passaram por todas as telas.

Disposição
Figura 9. Layout de estrutura de arame para a tela de finalização de convite de upgrade.

A animação do dispositivo sempre consiste em:

  • Meio círculo no fundo (mais formas animadas)
  • Estrutura do dispositivo
  • conteúdo da interface do usuário
Estilo
  • Selecione uma cor de fundo que funcione bem com o conteúdo da IU e com a aparência geral.
  • Use uma forma de meio círculo.
Movimento

Siga o fluxo padrão de animação da tela de finalização:

  1. O celular sobe um pouco.
  2. Um círculo aparece ao fundo.
  3. Formas surgem por trás do celular.
  4. As formas voam do fundo como confetes.
Figura 10. Layout de estrutura de arame para a animação da tela Upgrade Invite outro.
Figura 11. Exemplo de animação da tela final.

Testar o fluxo de convite de atualização

  1. No dispositivo Android, vá para: Settings > Google > Upgrade Party debug .
  2. Prepare o gatilho para o convite de atualização para o sistema operacional do dispositivo relevante (dependendo da versão atual do sistema operacional e do fluxo de convite de atualização específico para testar. Ou:
    1. Clique em Write Fake upgrade (versão atual) . (por exemplo, se você executar o sistema operacional Android 13, isso acionará o fluxo de teste do Android 13)
    2. Clique em Gravar atualização pendente (versão atual + 1) . (por exemplo, se você executar o sistema operacional Android 12, isso acionará o fluxo de teste do Android 13)
    3. Clique em Reportar atualização do sistema operacional
  3. Clique na notificação recebida ou clique em Abrir convite de atualização.

Opções de gatilho para convite de atualização

Existem 3 maneiras diferentes de acionar o fluxo de convite de atualização: 1. automático 2. transmissão 3. Play Services SDK acionado

Automático - notificação acionada pelo Google (somente para dispositivos em execução no gOTA)

Para dispositivos OEM que executam gOTA, a integração é automática e nenhuma etapa de integração do Upgrade Invite é necessária. Assim que uma grande atualização pendente do sistema operacional for detectada, isso enviará uma notificação por push para o dispositivo dos serviços do Google Play, levando ao fluxo de convite de atualização.

Android Broadcast - notificação acionada pelo Google (recomendado)

Uma transmissão de aplicativo é a maneira mais simples e recomendada de integrar o fluxo de convite de atualização.

Um broadcast receiver permite acionar o fluxo de convite de atualização do seu aplicativo usando uma mensagem de transmissão. A transmissão envia uma notificação por push para o dispositivo dos serviços do Google Play, levando ao fluxo de convite de atualização.

Pré-requisitos de transmissão

Para preparar seu aplicativo, conclua as etapas nas seções a seguir.

Certifique-se de que os arquivos de configuração do seu aplicativo usem os seguintes valores:

  • Um minSdkVersion de 14 ou superior
  • Um compileSdkVersion de 28 ou superior
  • A usePermission de android.permission.RECOVERY

Enviar a Transmissão

Veja abaixo as instruções para o aplicativo OEM (ou código) enviar uma transmissão do Android para acionar a notificação push:

  1. Enviar transmissão com a ação.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Adicione o pacote com.google.android.gms à transmissão.

    com.google.android.gms
    

Requisitos adicionais

O fluxo de convite de atualização também permite que os usuários executem a atualização do sistema operacional diretamente do fluxo.

Para que isso funcione, exponha uma intenção personalizada que o Google pode chamar do fluxo de convite de atualização que aciona o download da atualização.

Exemplo de Uso de Transmissão

Veja o exemplo a seguir de uma transmissão de aplicativo:

Context context = getApplicationContext();
Intent upgradeInviteIntent = new Intent()
  .setAction( "com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE")
  .setPackage("com.google.android.gms");
  .putExtra("com.google.android.gms.growth.upgradeparty.upgradeinvite.EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER", 14);

context.sendBroadcast(updateIntent);

O valor da chave EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER é um Integer que indica a versão do SO pendente (neste exemplo, a versão do Android a ser instalada é a 14). Isso é usado para determinar qual fluxo de convite de atualização será acionado.

SDK do Play Services - somente acionamento de fluxo

O SDK de terceiros permite que você acione o fluxo de convite de atualização de seu aplicativo ou de suas próprias notificações OTA. Use uma API externa de terceiros para ativar o próprio fluxo de convite de atualização. Este método é menos recomendado.

Pré-requisitos

Para preparar seu aplicativo, conclua as etapas nas seções a seguir.

Verifique se o arquivo de compilação do seu aplicativo usa os seguintes valores:

  • Um minSdkVersion de 14 ou superior
  • Um compileSdkVersion de 28 ou superior

Configurar seu aplicativo

Para configurar seu aplicativo:

1. Extract the library from the provided .zip file, and place it in your

repositório. 2. Adicione as dependências do Google Growth SDK ao arquivo Gradle no nível do aplicativo do seu módulo, normalmente app/build.gradle :

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. Para fornecer as dependências do cliente, inclua as seguintes bibliotecas:

    com.google.android.gms:play-services-base:18.0.1
    com.google.android.gms:play-services-basement:18.0.0
    com.google.android.gms:play-services-tasks:18.0.1
    

Inicialização da API

  1. Para inicializar um cliente, use a classe UpgradeParty:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. O parâmetro de atividade deve ser o objeto Activity inicial.

funções da API

O UpgradePartyClient resultante expõe a seguinte funcionalidade.

isEligibleForUpgradeInvite

import com.google.android.gms.growth.UpgradeInviteEligibilityParams;

Task<Boolean> isEligibleForUpgradeInvite(UpgradeInviteEligibilityParams params);

/** Contains parameters for the eligibility query. */
class UpgradeInviteEligibilityParams {


/** Integer indicating the pending OS version (in this example, the Android version to be installed is 14). This is used to determine which Upgrade Invite flow will be triggered. */
  int pendingAndroidOsVersionNumber;
}

Retorna uma tarefa que verifica de forma assíncrona se o usuário está qualificado para um convite de atualização. O valor booleano resultante indica se o usuário é elegível ou não.

invocaUpgradeInvite

Task<Void> invokeUpgradeInvite();

Chama a atividade de convite de atualização. O _Task _object resultante indica se ocorreu um erro ao iniciar a atividade.

Códigos de erro

Ambos os métodos de API podem falhar com uma exceção do tipo com.google.android.gms.common.api.ApiException . Nesses casos, espera-se que o chamador tente novamente mais tarde. Códigos de status comuns esperados ){:.external} incluem:

  • INTERNAL_ERROR - para qualquer erro no fluxo da lógica subjacente
  • TIMEOUT - se a solicitação não puder ser tratada em tempo hábil
  • API_NOT_CONNECTED - quando a API não está disponível (ou seja, o módulo UpgradeParty ainda não está pronto)
  • NETWORK_ERROR - a solicitação não pôde ser tratada devido a erros de rede
  • DEVELOPER_ERROR - o pacote de chamada não tem permissão para acessar a API UpgradeParty

Exemplo de uso do SDK

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.growth.UpgradeParty;
import com.google.android.gms.growth.UpgradePartyClient;

public class SampleActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   final UpgradePartyClient client = UpgradeParty.getClient(this);

   // Hide the invocation button initially
   View startUpgradeInviteButton = findViewById(R.id.__some_button__);
   startUpgradeInviteButton.setVisibility(View.GONE);

   // Register an onClick handler to invoke the Upgrade Party Activity
   startUpgradeInviteButton
       .setOnClickListener(
           view -> {
             client
                 .invokeUpgradeInvite()
                 .addOnCompleteListener(
                     task -> {
                       if (!task.isSuccessful()) {
                         // Do something with error, see task.getException()
                       }
                     });
           });
   }

   // Check if eligible for an Upgrade Party
   client
       .isEligibleForUpgradeInvite()
       .addOnCompleteListener(
           task -> {
             if (!task.isSuccessful()) {
               // Do something with error, see task.getException()
             } else {
                  // Show/Hide invocation button, based on the result
                  int visibility = 
                        task.getResult() ? View.VISIBLE : View.GONE;
                  startUpgradeInviteButton.setVisibility(visibility);
             }
           });
   }