Eu tenho um aplicativo na Google Play Store. Quando uma versão de atualização está disponível, a versão mais antiga se torna inutilizável - ou seja, se os usuários não atualizarem o aplicativo, eles não entrarão no aplicativo. Como posso forçar os usuários a atualizar o aplicativo quando uma nova versão estiver disponível?
100
Respostas:
Concordo com o ponto de Scott Helme em outra resposta aqui. Mas em algumas situações extremas (problemas de segurança, alterações de quebra de API ...) onde você absolutamente precisa que os usuários atualizem para continuar usando o aplicativo, você pode fornecer uma API de controle de versão simples. A API ficaria assim:
API versionCheck:
Parâmetros de solicitação:
int appVersion
Resposta
boolean forceUpgrade
boolean recommendUpgrade
Quando seu aplicativo é iniciado, você pode chamar essa API que passa na versão atual do aplicativo e verificar a resposta da chamada da API de controle de versão.
Se
forceUpgrade
estivertrue
, mostre uma caixa de diálogo pop-up com opções para permitir que o usuário saia do aplicativo ou vá para a Google Play Store para atualizar o aplicativo.Else if
recommendUpgrade
étrue
, mostrar a janela pop-up com opções para atualizar ou continuar usando o aplicativo.Mesmo com essa capacidade de atualização forçada em vigor, você deve continuar a oferecer suporte a versões mais antigas, a menos que seja absolutamente necessário.
fonte
tente isto: primeiro você precisa fazer uma chamada de solicitação para o link da playstore, buscar a versão atual de lá e compará-la com a sua versão atual.
fonte
Você não deve parar de oferecer suporte a uma versão mais antiga assim que uma nova versão for lançada. Isso resultará em uma experiência de usuário terrível. Não conheço nenhum fornecedor de software que faça isso, por um bom motivo.
O que acontece se o usuário não puder atualizar ou não quiser naquele momento? Eles simplesmente não podem usar seu aplicativo, o que é ruim.
O Google não fornece nenhuma opção para rastreamento de versão como essa, então você teria que fazer a sua própria. Um serviço da web simples para retornar a versão ativa atual que seu aplicativo pode verificar seria suficiente. Você pode então atualizar a versão e o aplicativo saberá que está desatualizado. Eu só recomendo usar isso para que seus usuários saibam que há uma atualização mais rapidamente do que dependendo do Google Play. Na verdade, não deve ser usado para impedir que o aplicativo funcione, apenas para solicitar que o usuário atualize.
fonte
Solução da equipe do Google
A partir do Android 5.0, isso é facilmente alcançável por meio do novo mecanismo de atualizações do Google Play In App. Os requisitos são ter a biblioteca Play Core da versão 1.5.0+ e usar a distribuição de App Bundles em vez de apks.
A biblioteca oferece 2 maneiras diferentes de notificar os usuários sobre a atualização:
Flexível, quando os usuários podem continuar usando o aplicativo enquanto ele está sendo atualizado em segundo plano.
Imediato - tela de bloqueio que não permite que um usuário entre no aplicativo até que o atualize.
Existem próximas etapas para implementá-lo:
Todas essas implementações de etapas são descritas em detalhes no site oficial: https://developer.android.com/guide/app-bundle/in-app-updates
fonte
As respostas de Scott e Michael estão corretas. Hospede um serviço que forneça um número mínimo de versão compatível e compare-o com a versão instalada. Espero que você nunca precise usar isso, mas é um salva-vidas se alguma versão estiver disponível, você absolutamente deve matar devido a alguma falha séria.
Eu só queria adicionar o código para o que fazer a seguir. É assim que você inicia o Google Play Intent e leva-o para sua nova versão na loja após avisar ao usuário que deve fazer o upgrade.
Você deve reconsiderar seu design se precisar forçar atualizações em cada versão.
fonte
O Google introduziu atualizações lib no aplicativo, ( https://developer.android.com/guide/app-bundle/in-app-updates ) que funciona no Lollipop + e oferece a capacidade de solicitar ao usuário uma atualização com um bom diálogo (FLEXÍVEL) ou com mensagem obrigatória em tela cheia (IMEDIATA).
Você precisa implementar o último. É assim que vai ficar:
Abordei todo o código nesta resposta: https://stackoverflow.com/a/56808529/5502121
fonte
Eu recomendo fortemente verificar a funcionalidade de configuração remota do Firebase para isso.
Eu implementei usando um parâmetro - app_version_enabled - com uma condição "Disabled Android Versions" que se parece com isto:
O padrão para o parâmetro é "true", mas Disabled Android Versions tem um valor false. No meu regex para versões desativadas do Android, você pode adicionar mais versões desativadas simplesmente com outra
|{version name}
dentro desses parênteses.Então, eu apenas verifico se a configuração diz que a versão está habilitada ou não - eu tenho uma atividade que inicio que força o usuário a atualizar. Eu verifico os únicos dois lugares em que o aplicativo pode ser iniciado externamente (minha atividade de iniciador padrão e uma atividade de manipulação de intenção). Como o Remote config funciona com base em cache, ele não capturará imediatamente as versões "desativadas" do aplicativo se não tiver passado o tempo necessário para o cache ser invalidado, mas isso é no máximo 12 horas se você estiver passando seu valor de expiração de cache recomendado.
fonte
Oficialmente, o Google fornece uma API Android para isso.
A API de atualização já está disponível - https://developer.android.com/guide/app-bundle/in-app-updates
fonte
verifique o código da versão do apk local e da Play Store
implementar classe para verificação de versão
caixa dialob para atualização
layout de diálogo
fonte
É melhor definir nosso próprio processo para atualização.
Android e iOS: se a versão mais recente do aplicativo estiver disponível, ele mostrará um alerta como “Última versão disponível com mais recursos. Para atualizar, clique no botão de atualização” (Alerta com “Upgarde” e o botão “Não. Obrigado”.) Em seguida, o aplicativo redirecionará para playstore / Appstore e abrirá a versão mais recente.
Antes do processo de atualização, certifique-se de lidar com o processo de migração de banco de dados adequado se houver qualquer alteração no esquema de banco de dados.
fonte
Para forçar o usuário do aplicativo a atualizar se uma atualização estiver disponível no mercado, você deve primeiro verificar a versão do aplicativo no mercado e compará-la com a versão do aplicativo no dispositivo. Se forem diferentes, pode haver uma atualização disponível. Neste post eu escrevi o código para obter a versão atual do market e a versão atual do dispositivo e compará-las. Também mostrei como mostrar a caixa de diálogo de atualização e redirecionar o usuário para a página de atualização. Visite este link: https://stackoverflow.com/a/33925032/5475941 Apenas certifique-se de que na caixa de diálogo você mostre apenas o botão de atualização do usuário e não mostre a ele o botão cancelar. Nesse caso, ele será forçado a atualizar, antes de usar o aplicativo.
fonte
O que definitivamente deve ser mencionado aqui é a API de atualizações no aplicativo que será lançada em breve .
fonte
É uma boa ideia usar a configuração remota para a versão do aplicativo e sempre verificar a atividade de inicialização se a versão atual do aplicativo é a mesma que a versão remota ou não, se não forçar para atualização da app store.
Codificação feliz lógica simples ..
https://firebase.google.com/docs/remote-config/android
fonte
Você pode usar as atualizações do aplicativo Play Core Library para resolver isso. Você pode verificar a disponibilidade de atualizações e instalá-las perfeitamente.
As atualizações no aplicativo não são compatíveis com aplicativos que usam arquivos de expansão APK (arquivos .obb). Você pode ir para downloads flexíveis ou atualizações imediatas que o Google Play se encarrega de baixar e instalar a atualização para você.
Consulte esta resposta https://stackoverflow.com/a/58212818/7579041
fonte
você pode fazer isso fazendo uma correspondência entre um número de versão que é mantido no aplicativo em uma variável e da mesma forma a versão atual do aplicativo é mantida no lado do servidor e cada vez que o usuário abre o aplicativo, a primeira solicitação deve ser enviada para verificar se ele encontra a correspondência não faz nada, simplesmente permite que o usuário use seu aplicativo, caso contrário, acione um intent no google playstore ou abra uma janela de visualização da web para seu aplicativo (window.open (" https://play.google.com/store/apps/details?id= package_name ", '_system', 'location = yes');) e lá eles terão automaticamente o botão pedindo atualização que é o que o google playstore faz por você se você não tiver as atualizações automáticas ativadas.
fonte
Você pode notificar seus usuários de que há uma nova versão do aplicativo atual disponível para atualização. Além disso, se essa condição for verdadeira, você pode bloquear o login no aplicativo.
Por favor, veja se isso fornece a você a solução.
fonte
Bem, pode haver muitas soluções para esse problema, como copiar o código da versão da página do aplicativo (página do aplicativo do Google Play), etc.
Mas vou mostrar a solução definitiva que não custará um centavo e funcionará como mágica.
painel do Firebase Remote config
Compare-o com o código da versão atual do aplicativo, que você pode obter pelo seguinte código
}
Se o código da versão buscada for maior que a versão atual, mostre um AlertDialog pedindo para atualizar o aplicativo. Caso contrário, o aplicativo já está atualizado.
Portanto, sempre que lançar a nova versão, você precisará colocar o código da nova versão no painel de configuração remota do Firebase
Você pode ler todo o tutorial sobre como forçar os usuários a atualizar o aplicativo usando o Firebase Remote config
fonte
O Google lançou atualizações no aplicativo para a biblioteca Play Core.
Implementei uma biblioteca leve para implementar facilmente atualizações no aplicativo. Você pode encontrar no link a seguir um exemplo sobre como forçar o usuário a realizar a atualização.
https://github.com/dnKaratzas/android-inapp-update#forced-updates
fonte