Estamos construindo um conjunto de aplicativos móveis nativos para complementar nosso aplicativo existente que atualmente suporta apenas uma interface da web para o servidor. O aplicativo pode ser instalado e hospedado por clientes em sua própria infraestrutura ou hospedado por nós mesmos para clientes que desejam utilizá-lo. Os clientes de grandes empresas geralmente optam por se auto-hospedar, enquanto os clientes menores escolhem nossa opção de hospedagem.
Precisamos oferecer suporte a várias versões do aplicativo. Nem todos os clientes desejam atualizar ao mesmo tempo. Com a interface da web, o suporte a várias versões não é difícil, pois a interface da web usa automaticamente a versão do servidor associada à instalação do servidor. Com aplicativos móveis nos quais você normalmente só possui um único aplicativo disponível nas lojas de aplicativos, o suporte a diferentes níveis da API do servidor e a funcionalidade no aplicativo móvel se tornam um desafio. Estou interessado em saber como outras pessoas estão resolvendo o problema. Na minha opinião, você tem opções como:
- Ofereça suporte a várias versões do aplicativo na loja de aplicativos.
- Crie suporte para os aplicativos móveis para determinar automaticamente a versão da API do servidor com o qual está falando e rotear chamadas para os terminais da API do servidor relevantes. Também introduza o uso de algum tipo de mecanismo de alternância de recurso para ativar / desativar a funcionalidade no aplicativo móvel com base no que está disponível nas diferentes versões do servidor.
- Não use a loja de aplicativos para implantar seu aplicativo. Aponta os usuários para um URL específico da versão que eles podem usar para baixar e instalar o aplicativo.
Opção 1 - O IMO criará confusão para os usuários do aplicativo. Também não há um caminho de migração agradável de uma versão do aplicativo para a próxima, pois são dois aplicativos separados.
Opção 2 - por outro lado, pode se tornar rapidamente muito complexa se você levar em consideração que os recursos visuais da interface do usuário agora precisam basicamente se adaptar a qualquer funcionalidade disponível na versão da API do servidor com a qual está falando. Ele também precisa oferecer suporte às diferentes versões das APIs do servidor que ele precisa fazer.
Opção 3 - é possível no mundo Android ao fazer o carregamento lateral do seu aplicativo, mas até onde eu sei não é suportado no iOS e não tenho certeza de qual será a imagem dos aplicativos móveis do Windows 10 no futuro.
Que outras abordagens existem para resolver o problema? Por favor, não discuta o fato de que estamos escrevendo aplicativos nativos. Não é isso que estou perguntando. Estou procurando orientação sobre como outras pessoas estão lidando com o problema de oferecer suporte a várias versões do mesmo aplicativo móvel nativo conversando com versões diferentes de uma API de servidor.