Quero criar uma página da web, uma página que redirecionará um iPhone para a loja de aplicativos, se o iPhone não tiver o aplicativo instalado, mas se o iPhone tiver o aplicativo instalado, quero que ele abra o aplicativo.
Eu já implementei um URL personalizado no aplicativo para iPhone, então eu tenho um URL para o aplicativo que é algo como:
myapp://
E se esse URL for inválido, desejo que a página seja redirecionada para a loja de aplicativos. Isso é possível em tudo?
Se eu não tenho o aplicativo instalado no telefone e escrevo o myapp: // url no safari, tudo o que recebo é uma mensagem de erro.
Mesmo se houver um truque feio com javascript, eu realmente gostaria de saber?
iphone
ios
web-applications
mobile-safari
Joakim Engstrom
fonte
fonte
Respostas:
Tanto quanto eu sei, você não pode, em um navegador, verificar se um aplicativo está instalado ou não.
Mas você pode tentar redirecionar o telefone para o aplicativo e, se nada acontecer, redirecione o telefone para uma página especificada, assim:
Se a segunda linha do código der um resultado, a primeira linha nunca será executada.
Espero que isto ajude!
Pergunta semelhante:
fonte
Para promover a resposta aceita, às vezes você precisa adicionar código extra para lidar com as pessoas que retornam o navegador após o lançamento do aplicativo - essa função setTimeout será executada sempre que o fizerem. Então, eu faço algo assim:
Dessa forma, se houver um congelamento na execução do código (ou seja, troca de aplicativo), ele não será executado.
fonte
O iOS Safari possui um recurso que permite adicionar um banner "inteligente" à sua página da web que vinculará ao seu aplicativo, se estiver instalado, ou à App Store.
Você faz isso adicionando uma
meta
tag à página. Você pode até especificar um URL detalhado do aplicativo se desejar que o aplicativo faça algo especial ao carregar.Os detalhes estão na página de Promoção de aplicativos da Apple com banners de aplicativos inteligentes .
O mecanismo tem as vantagens de ser fácil e apresentar um banner padronizado. A desvantagem é que você não tem muito controle sobre a aparência ou o local. Além disso, todas as apostas serão desativadas se a página for visualizada em um navegador que não seja o Safari.
fonte
A partir de 2017, parece que não há uma maneira confiável de detectar que um aplicativo esteja instalado, e o truque de redirecionamento não funcionará em todos os lugares.
Para pessoas como eu, que precisam fazer o link direto diretamente de e-mails (bastante comuns), vale a pena observar o seguinte:
O envio de e-mails com appScheme: // não funcionará corretamente porque os links serão filtrados no Gmail
Redirecionar automaticamente para appScheme: // está bloqueado pelo Chrome: suspeito que o Chrome exija que o redirecionamento seja síncrono a uma interação do usuário (como um clique)
Agora você pode criar um link direto sem appScheme: // e é melhor, mas requer uma plataforma moderna e uma configuração adicional. Android iOS
Vale a pena notar que outras pessoas já pensaram sobre isso em profundidade. Se você observar como o Slack implementa o recurso "link mágico", você pode perceber que:
fonte
Você pode conferir este plug-in que tenta resolver o problema. Ele é baseado na mesma abordagem descrita por missemisa e Alastair etc., mas usa um iframe oculto.
https://github.com/hampusohlsson/browser-deeplink
fonte
A @Alistair apontou nesta resposta que, às vezes, os usuários retornam ao navegador após abrir o aplicativo. Um comentarista para essa resposta indicou que os valores dos tempos usados precisavam ser alterados dependendo da versão do iOS. Quando nossa equipe teve que lidar com isso, descobrimos que os valores de tempo para o tempo limite inicial e informando se havíamos retornado ao navegador tinham que ser ajustados e, geralmente, não funcionavam para todos os usuários e dispositivos.
Em vez de usar um limite arbitrário de diferença de horário para determinar se retornamos ao navegador, fazia sentido detectar os eventos "ocultar página" e "exibição de página".
Desenvolvi a seguinte página da Web para ajudar a diagnosticar o que estava acontecendo. Ele adiciona diagnósticos HTML à medida que os eventos se desenrolam, principalmente porque o uso de técnicas como log do console, alertas ou Inspetor da Web, jsfiddle.net etc., todos tiveram suas desvantagens nesse fluxo de trabalho. Em vez de usar um limite de tempo, o Javascript conta o número de eventos "ocultar página" e "exibição de página" para verificar se eles ocorreram. E descobri que a estratégia mais robusta era usar um tempo limite inicial de 1000 (em vez dos 25, 50 ou 100 relatados / sugeridos por outros).
Isso pode ser servido em um servidor local, por exemplo,
python -m SimpleHTTPServer
e exibido no iOS Safari.Para jogar, pressione os links "Abrir um aplicativo instalado" ou "Aplicativo não instalado". Esses links devem fazer com que o aplicativo do Google Maps ou a App Store seja aberto, respectivamente. Você pode retornar ao Safari para ver a sequência e o horário dos eventos.
(Observação: isso funcionará apenas para o Safari. Para outros navegadores (como o Chrome), você precisará instalar manipuladores para os eventos ocultar páginas / mostrar equivalentes).
Atualização: Como o @Mikko apontou nos comentários, os eventos pageshow / pagehide que estamos usando aparentemente não são mais suportados no iOS8.
fonte
Eu preciso fazer algo assim, acabei indo com a seguinte solução.
Eu tenho um URL de site específico que abrirá uma página com dois botões
1) Button One Ir para o site
2) Botão Dois, vá para o aplicativo (iphone / android phone / tablet), você pode voltar para um local padrão a partir daqui, se o aplicativo não estiver instalado (como outro URL ou uma loja de aplicativos)
3) cookie para lembrar a escolha dos usuários
fonte
Depois de compilar algumas respostas, criei o seguinte código. O que me surpreendeu foi que o timer não fica congelado em um PC (Chrome, FF) ou Android Chrome - o gatilho funcionava em segundo plano e a verificação de visibilidade era a única informação confiável.
JS Fiddle
fonte
A solução da data é muito melhor do que outras, tive que aumentar o tempo em 50 dessa forma, este é um exemplo do Tweeter:
o único problema no Mobile IOS Safari é quando você não tem o aplicativo instalado no dispositivo e, portanto, o Safari mostra um alerta que ocorre automaticamente quando o novo URL é aberto, pelo menos é uma boa solução por enquanto!
fonte
Não leu tudo isso, mas pode usar um iframe e adicionar a fonte ao "meu aplicativo: // seja qual for".
Em seguida, verifique regularmente se o intervalo definido da página é 404 ou não.
Você também pode usar a chamada Ajax. Se a resposta 404, o aplicativo não está instalado.
fonte