
Entre a variedade de ferramentas anunciadas no
Android Dev Summit , eu gostaria de prestar atenção especial ao mecanismo de atualização de aplicativos IAUs (In-App Updates), que ajuda os desenvolvedores a acelerar a adição de novos recursos, correções de bugs e melhorias de desempenho. Como essa funcionalidade foi
publicada após o Google I / O 2019, neste artigo falarei em detalhes sobre IAUs, descreverei os esquemas de implementação recomendados e darei alguns exemplos de código. Também falarei sobre nossa experiência na integração de IAUs no
Pandao , um aplicativo para encomendar mercadorias da China.
A nova API permite que os desenvolvedores iniciem uma atualização de aplicativo para a versão mais recente disponível no Google Play. Dessa forma, as IAUs complementam o mecanismo de atualização automática existente do Google Play. As IAUs contêm vários esquemas de implementação que são fundamentalmente diferentes em termos de interação do usuário.
- O Flexible Flow oferece aos usuários o download da atualização em segundo plano e a instalação em um momento conveniente para o usuário. Destina-se a casos em que os usuários ainda podem usar a versão antiga, mas uma nova já está disponível.

- O Fluxo imediato exige que os usuários baixem e instalem a atualização antes de continuar usando o aplicativo. Destina-se a casos em que é essencial que os desenvolvedores atualizem o aplicativo.

Como a segunda opção não é tão importante e menos adequada para a aplicação Pandao, analisaremos o cenário de Fluxo Flexível com mais detalhes.
Integração de fluxo flexível de IAUs
Casos de uso
O processo de atualização usando IAUs consiste em várias etapas.
- Um aplicativo que usa a biblioteca Play Core, que verifica no Google Play se há atualizações disponíveis.
- Se estiverem, o aplicativo solicitará ao Google Play para mostrar o diálogo IAUs. O Google Play mostra ao usuário uma caixa de diálogo com uma proposta para atualização.
- Se o usuário concordar, o Google Play em segundo plano baixa a atualização, mostrando ao usuário na barra de status o progresso do download.
- Se o download for concluído quando o aplicativo estiver sendo executado em segundo plano, o Google Play concluirá automaticamente a instalação. Se o aplicativo estiver ativo no momento, é necessário, nesses casos, determinar sua própria lógica de conclusão da instalação. Considere os seguintes cenários.
- O aplicativo inicia o processo de instalação mostrando ao usuário uma caixa de diálogo do Google Play com um indicador de progresso. Após a conclusão da instalação, uma versão atualizada do aplicativo é iniciada. Nesse caso, é recomendável exibir uma caixa de diálogo adicional que permita ao usuário confirmar que está pronto para reiniciar o aplicativo agora. Este é o esquema de implementação recomendado .
- O aplicativo aguarda até ficar em segundo plano e, em seguida, conclui a atualização. Por um lado, esse é um comportamento menos invasivo do ponto de vista do UX, pois a interação do usuário com o aplicativo não é interrompida. Mas, por outro lado, exige que o desenvolvedor implemente a lógica para determinar se o aplicativo está em segundo plano.
Se a instalação da atualização baixada não foi concluída, o Google Play pode concluir a instalação em segundo plano. Essa opção é melhor não usar explicitamente, porque não garante a instalação da atualização.
Requisitos básicos de teste
Para concluir manualmente todo o processo de atualização em um dispositivo de teste, você deve ter pelo menos duas versões do aplicativo com números de montagem diferentes:
origem e
destino .
- A versão original com um número maior deve ser publicada no Google Play; será identificada pelo Google Play como uma atualização disponível. A versão de destino com um número de compilação menor e IAUs integradas deve estar instalada no dispositivo; nós a atualizaremos. A linha inferior é que, quando o aplicativo solicitar ao Google Play para verificar se há uma atualização, ele comparará os números de montagem da versão instalada e disponível. Portanto, as IAUs serão lançadas apenas se o número da compilação no Google Play for maior que a versão atual no dispositivo.
- As versões de origem e de destino devem ter o mesmo nome de pacote e devem ser assinadas com o mesmo certificado de liberação .
- Android 5.0 (nível de API 21) ou superior.
- Jogue a biblioteca Core 1.5.0 ou superior.
Exemplo de código
Aqui, examinamos um código de amostra para o uso do IAUs Flexible Flow, que também pode ser encontrado na
documentação oficial . Primeiro, você precisa adicionar a biblioteca Play Core ao arquivo build.gradle no nível do módulo.
dependencies { ... implementation "com.google.android.play:core:1.5.0" }
Em seguida, crie uma instância do
AppUpdateManager
e adicione uma função de retorno de chamada ao
AppUpdateInfo
, que retornará informações sobre a disponibilidade da atualização, o objeto para iniciar a atualização (se disponível) e o andamento atual do download, se já tiver sido iniciado.
Para mostrar a caixa de diálogo para solicitar atualizações do Google Play, você deve passar o objeto
AppUpdateInfo
recebido para o método
AppUpdateInfo
.
appUpdateManager.startUpdateFlowForResult(
Para monitorar o status da atualização, você pode adicionar o ouvinte de evento
InstallStateUpdatedListener
ao gerenciador de IAUs.
Assim que a atualização for baixada (status
DOWNLOADED
), você precisará reiniciar o aplicativo para concluir a atualização. A reinicialização pode ser iniciada chamando
appUpdateManager.completeUpdate()
, mas antes disso é recomendável mostrar uma caixa de diálogo para que o usuário confirme explicitamente sua disponibilidade para reiniciar o aplicativo.
Snackbar.make( rootView, "An update has just been downloaded from Google Play", Snackbar.LENGTH_INDEFINITE ).apply { setAction("RELOAD") { appUpdateManager.completeUpdate() } show() }
Erro "A atualização não está disponível"
Primeiro, verifique novamente a conformidade com os requisitos listados na seção Requisitos básicos de implementação. Se você tiver feito tudo, mas a atualização de acordo com a chamada
onSuccess
ainda estiver indisponível, o problema pode estar no cache. É provável que o aplicativo Google Play não esteja ciente da atualização disponível devido ao mecanismo de cache interno. Para evitar isso durante o teste manual, você pode forçar uma redefinição de cache acessando a página "Meus aplicativos e jogos" no Google Play. Ou você pode simplesmente limpar o cache nas configurações do aplicativo Google Play. Observe que esse problema ocorre apenas durante o teste, não deve afetar os usuários finais, pois o cache ainda é atualizado diariamente.
Fluxo flexível de IAUs no aplicativo Pandao
Participamos de um programa de acesso antecipado e integramos o IAUs Flexible Flow (implementação recomendada) no aplicativo Pandao, uma plataforma na qual fabricantes e fornecedores podem comercializar produtos chineses. A caixa de diálogo IAUs foi exibida na tela principal para que o número máximo de usuários pudesse interagir com ela. Inicialmente, queríamos mostrar o diálogo não mais do que uma vez por dia, para não distrair as pessoas da interação com o aplicativo.
Como o teste A / B desempenha um papel fundamental no ciclo de vida de qualquer novo recurso, decidimos avaliar o efeito das IAUs em nosso aplicativo. Dividimos aleatoriamente os usuários em dois grupos separados. O primeiro foi um controle, sem o uso de IAUs, e o segundo grupo foi um teste, mostramos o diálogo das IAUs para esses usuários.
Teste IAUs de fluxo flexível A / B no aplicativo Pandao.Nos últimos lançamentos, medimos a porcentagem de usuários ativos de cada versão do aplicativo. Verificou-se que entre os usuários ativos com a versão mais recente disponível na época, a parte principal era composta por participantes do grupo B, ou seja, com a função IAU. A linha roxa no gráfico mostra que, nos primeiros dias após a publicação da versão 1.29.1, o número de usuários ativos com IAUs excedeu o número de usuários sem essa função. Portanto, pode-se argumentar que os usuários com IAUs atualizam o aplicativo mais rapidamente.
A caixa de diálogo IAUs Flexible Flow no aplicativo Pandao.De acordo com nossos dados (veja o gráfico acima), os usuários costumam clicar no botão de confirmação na caixa de diálogo IAUs nos primeiros dias após o lançamento e, em seguida, a conversão é constantemente reduzida até a publicação da próxima versão do aplicativo. O mesmo ocorre com o botão de instalação na caixa de diálogo, que inicia a instalação da atualização baixada. Portanto, podemos dizer que o valor médio de conversão em ambos os casos é diretamente proporcional à frequência de lançamentos. No Pandao, a conversão média em um mês atinge 35% para um clique no botão de confirmação e 7% para um clique no botão de instalação.
Assumimos que uma diminuição na porcentagem de confirmações ao longo do tempo é apenas um problema de experiência do usuário, porque as pessoas interessadas na nova versão serão atualizadas rapidamente e as que não estiverem interessadas em atualizar não se interessarão. Com base nessa premissa, decidimos não incomodar aqueles que não estão interessados em atualizar, e não perguntar todos os dias. É uma boa prática usar uma lógica de consulta diferente, baseada na "obsolescência", ou seja, para não incomodar os usuários, avaliamos quantas versões antigas eles têm e com que frequência já sugerimos que eles atualizem.
Em geral, as IAUs mostraram bons resultados durante os testes A / B, então lançamos as IAUs para todos os usuários.
Agradecimentos
Obrigado por sua ajuda ao escrever este artigo Marina Pleshkova
Maryna_Pliashkova , Alexander Cherny
alexchernyy , Ilya Nazarov
RolaRko , Gleb Bodyachevsky, Daniil Polozov
jokerdab , Anastasia Kulik, Vladislav Breus e Vladislav Goldin
Vladiskus .