O recurso que funciona bem como um módulo on demand é aquele que não é necessário para a maioria dos usuários no momento da instalação. Veja a seguir alguns exemplos de recursos de app que se adequariam aos módulos on demand:
- Edição e upload de um vídeo em um app em que a maioria dos usuários só assiste vídeos
- Adição de uma receita em um app em que a maioria dos usuários só navega e segue as receitas de outras pessoas
- Recurso de ajuda e suporte quando a maioria dos usuários não procura ajuda ou não a procura dentro do app
- Grandes bibliotecas para recursos menos usados, como fornecimento de captura e relatórios detalhados de bugs
- Recursos específicos de pagamento ou finalização da compra
- Experiências de mídia de alta resolução ou recursos de RV/RA
No caso típico de módulos que são relativamente pequenos (menos de 10 MB) e quando não há falhas de rede ou outras falhas, os usuários podem fazer o download de um módulo on demand e usá-lo muito rapidamente. Isso significa que a experiência normalmente não é diferente do que se o módulo estivesse presente na instalação do app.
Esta página descreve as práticas recomendadas que ajudam você a:
- garantir que os usuários estejam cientes e sintam-se no controle de downloads de módulos relativamente maiores que não são carregados instantaneamente, ou erros de instalação do módulo;
- otimizar ainda mais a experiência de envio do módulo, especialmente em situações em que você pode prever que um usuário vai precisar de um módulo específico.
Depois de ler este guia, confira as práticas recomendadas em ação testando o app de exemplo da API Play Core (link em inglês).
Manter o usuário informado
Você precisa informar o usuário quando um recurso não estiver imediatamente disponível. Se um usuário decidir fazer o download do recurso no Google Play, exiba o progresso do download.
Você pode monitorar o estado da solicitação para mostrar o progresso do download e o estado da instalação. No entanto, o tipo de IU que você quer exibir pode depender do tamanho do download:
- Para módulos menores (10 MB ou menos) que podem ser instalados muito rapidamente, considere indicadores como ícones de carregamento ou uma breve mensagem "Fazendo o download do conteúdo".
- Para módulos maiores cujo download e instalação podem demorar alguns segundos ou mais, recomendamos que você exiba uma barra de progresso de download e instalação, como a mostrada na Figura 1.
Figura 1. Mostrando uma mensagem e uma barra de progresso ao fazer o download de um recurso on demand e o instalar.
Comunicar atrasos e falhas de instalação da maneira correta
Se um download falhar ou progredir mais lentamente do que o esperado, comunique de forma clara e
transparente ao usuário o que está acontecendo e o que ele
pode fazer, como mostrado nas Figuras 2 e 3. Por exemplo, se você monitorar o estado da solicitação de download e seu app receber um erro API_NOT_AVAILABLE
, informe ao usuário que o dispositivo não é compatível com downloads on demand.
![](https://developer.android.com/static/studio/images/projects/dynamic-delivery/failed_download.png?authuser=9&hl=pt)
Figura 2. Informe ao usuário por que um recurso não pode ser instalado no momento.
![](https://developer.android.com/static/studio/images/projects/dynamic-delivery/large_download.png?authuser=9&hl=pt)
Figura 3. Explique ao usuário por que o download de um recurso pode demorar mais do que o esperado.
Mostrar valor antes de solicitar permissão para downloads grandes
Se um módulo sob demanda for grande (maior que 150 MB), o Google Play solicitará a autorização do usuário antes de fazer o download dele.
Antes de solicitar o módulo, explique o valor dele para os usuários. Explique por que você está fazendo essa solicitação, assim como faria ao solicitar permissões do app. A comunicação aberta com os usuários aumenta a probabilidade de eles aceitarem o download.
Por exemplo, imagine que você está criando um app de e-commerce, e um dos recursos permite que os usuários posicionem móveis diretamente no apartamento usando a realidade aumentada (RA). Você pode incluir uma mensagem como "Quer ver como seu novo sofá vai ficar na sala de estar? Instale o visualizador de realidade aumentada".
Realizar o download e a instalação em segundo plano
O download e a instalação do módulo precisam sempre ocorrer em segundo plano. Ou seja, enquanto um usuário aguarda a disponibilidade de um recurso, você precisa permitir que ele continue usando outras partes do app. Quando o recurso estiver disponível, envie uma notificação que permita que o usuário comece a usar o recurso, se ele quiser.
Conforme mostrado na Figura 5, o usuário continua usando o app e recebe uma notificação quando a instalação de um recurso on demand é concluída.
Figura 5. Em vez de alterar o contexto do usuário repentinamente quando a instalação de um módulo for concluída, informe a ele que o recurso solicitado está pronto para uso.
Quando o módulo estiver pronto para uso, notifique o usuário e dê a ele a opção de iniciar ou não o recurso. Esse padrão dá ao usuário contexto e controle sobre a própria experiência.
Em alguns casos, você pode iniciar o recurso assim que ele estiver pronto. No entanto, como isso pode interromper a experiência do usuário, considere cuidadosamente se esse comportamento é esperado e apropriado.
Liberar o armazenamento do dispositivo quando um módulo não for mais necessário
Uma função útil de todos os módulos de recursos é que é possível os desinstalar individualmente. Se um módulo de recurso não estiver mais sendo usado, você poderá reduzir o tamanho do seu app no dispositivo do usuário solicitando ao Google Play que o desinstale.
Por exemplo, seu app pode ter um fluxo de integração robusto, talvez contendo rich media. Depois que um usuário concluir o fluxo de integração ou depois dele permanecer como um usuário ativo por um determinado período, use a API Play Feature Delivery para solicitar que o Google Play desinstale apenas esse componente do app.
Lembre-se de que você também pode desinstalar os módulos incluídos na instalação inicial do app. Por exemplo, um módulo que treina novos usuários sobre como usar seu app é valioso quando os usuários o utilizam pela primeira vez. No entanto, para reduzir o tamanho do app, desinstale-o depois que ele concluir o treinamento.
Dicas avançadas
Normalmente, você precisa lidar com situações em que o usuário sinaliza explicitamente a intenção de usar a função dos seus módulos de recurso on demand.
No entanto, é recomendável prever quando um usuário provavelmente vai interagir com um recurso antes de ele sinalizar que quer usá-lo. Usando como exemplo um app que permite criar e fazer o download de receitas culinárias, as diretrizes a seguir descrevem como otimizar a experiência de entrega do módulo antecipando as necessidades do usuário.
Preveja a necessidade dos usuários por um recurso na sessão atual. Considere se os usuários precisam criar uma conta para o app de receitas apenas quando quiserem criar e compartilhar as próprias receitas com a comunidade. Você pode usar a criação da conta como um sinal de que o usuário provavelmente adicionará a própria receita, iniciando o download do módulo de recurso antes mesmo de tocar em "adicionar receita". Você pode aplicar essa abordagem a outras jornadas do usuário no app para simplificar o processo de download de recursos.
Preveja a necessidade dos usuários por um recurso em uma sessão futura. Se você não precisa que o app faça o download de um módulo on demand e instale-o imediatamente, é possível adiar a instalação para quando o app estiver em segundo plano. Nesse caso, o Google Play processará o download e a instalação para você. Por exemplo, imagine que você quer lançar novas receitas sazonais para o app de culinária e que elas não são uma prioridade alta para a sessão atual do usuário. Você pode solicitar que o Play faça o download dessas receitas e instale-as quando o app estiver em segundo plano. Isso é especialmente útil para recursos maiores (> 10 MB) que não são necessários imediatamente, mas que provavelmente vão ser no futuro.
Preveja a necessidade dos usuários por um recurso antes da instalação do app. É recomendável adicionar suporte ao envio condicional para incluir seu recurso no momento da instalação com base no país do usuário, na capacidade de hardware do dispositivo e no nível da API. Por exemplo, talvez você queira incluir receitas que usam carne suína em módulos condicionais e omitir esse módulo em instalações do app em regiões que predominantemente evitam pratos com carne suína.