Recebi uma solicitação de wireless há dois dias. Como novato, estou ocupado há vários dias... Há um link na página Se o usuário tiver instalado o APP, clique para abrir o APP correspondente. não instalei, clique para abrir o APP correspondente Configurando a conexão Pesquisei online e basicamente disse que pode ser alcançado, mas a situação real não é otimista.
Claro, é apenas um dos requisitos. Existem também vários aplicativos hoje em dia. As páginas H5 compartilhadas geralmente têm um botão para abrir imediatamente. Se o aplicativo for instalado localmente, o aplicativo local será acessado diretamente. não instalado, então vá para download. Essa é uma estratégia muito normal de promoção e desvio de tráfego Recentemente, o gerente de produto fez essa demanda, fazendo uma barra de download com o aplicativo aberto como função Toutiao, etc., e não vou falar do resto!
Agora vamos ao tópico principal de hoje, como o H5 abre ou ativa um aplicativo local em um telefone celular. Olhando as respostas no Baidu e no Google, existem apenas dois tipos:
Primeira maneira:Configurando diretamente o esquema do lado Android no href na tag a do HTML, é claro, se houver outras configurações de host, basta segui-las. A configuração e o código do lado Android são os seguintes:
configuração do lado Android:
<atividade android:name = .MainActivity> <intent-filter> <action android:name = android.intent.action.MAIN /> <categoria android:name = android.intent.category.LAUNCHER /> </intent-filter> <intent-filter> <ação android:name=android.intent.action.VIEW/> <categoria android:name=android.intent.category.DEFAULT/> <categoria android:name=android.intent.category.BROWSABLE/> <dados android:host=jingewenku.com android:scheme=abraham/> </intent-filter> </atividade>
Nota: Se estiver configurado na página inicial, deve ser colocado lado a lado com o rótulo, caso contrário não haverá ícone do aplicativo móvel após a execução, observe que o protocolo do esquema deve estar em letras minúsculas, caso contrário haverá uma exceção; que não pode responder!
código HTML:
<html> <head> <meta http-equiv=Content-Type content=text/html; charset=UTF-8> <title>Insira o título aqui</title> </head> <body> <a href=abraham: //jingewenku.com/?pid=1>Abrir aplicativo</a><br/> </body></html>
Aqui damos uma olhada no formato do protocolo de emenda de esquema:
< a href=[scheme]://[host]/[path]?[query]>Iniciar aplicativo</a>
O significado de cada item é o seguinte:
esquema: identifique o aplicativo iniciado. ※Detalhes descritos posteriormente
anfitrião: descrição apropriada
caminho: chave necessária ao passar valor ※Tudo bem se não estiver disponível
consulta: Obtenha a chave e o valor do valor ※Está tudo bem se você não tiver
O acima pode ser usado para abrir o aplicativo local, é claro, quando o aplicativo existir, caso contrário não haverá resposta.
Você pode perguntar: o protocolo de esquema configurado no Android não está configurado no código HTML acima? Obviamente não configurei o pid, por que deveria escrever isso? Isso ocorre porque às vezes, quando invocamos o aplicativo local, podemos passar alguns parâmetros para o aplicativo. Podemos configurar esses parâmetros aqui. Só precisamos obtê-los no oncreate.
Intenção intenção = getIntent(); Uri uri = intent.getData();
Se ainda quiser configurar o protocolo de esquema no Android, você também pode fazer o seguinte:
Uri uri = getIntent().getData();if(uri != null) { // Informações completas do URL String url = uri.toString(); Log.e(TAG, url: + uri); esquema = uri.getScheme(); Log.e(TAG, esquema: + esquema); // parte do host String host = uri.getHost(); host); //parte da porta int port = uri.getPort(); path); List<String> pathSegments = uri.getPathSegments(); // Parte da consulta String query = uri.getQuery(); //Obter o valor do parâmetro especificado String GoodsId = uri.getQueryParameter(goodsId); Log.e(TAG, GoodId: + GoodsId);}Como determinar se um esquema é válido:
PackageManager packageManager = getPackageManager();Intent intent = newIntent(Intent.ACTION_VIEW, Uri.parse(abraham://jingewenku.com:8888/goodsDetail?goodsId=10011002));List<ResolveInfo> atividades = packageManager.queryIntentActivities(intent, 0);booleanisVálido = !activities.isEmpty();if(isValid) { startActivity(intent);}Este método também é o mais popular no Baidu, mas traz um problema. O requisito acima é ter uma conexão na página Se o usuário instalar o APP, clique para abrir o APP correspondente se o usuário não estiver. instalado, clique para abrir a conexão de configuração correspondente. Obviamente, isso não atende aos requisitos e só pode ser usado para algumas necessidades individuais.
Segunda maneira:Como não é possível configurar o protocolo de esquema em href, isso só pode ser feito por meio do código js. Somente desta forma o aplicativo pode ser aberto com base no julgamento quando estiver disponível e pular para o link de download para fazer o download quando não estiver.
Sabemos que js não pode determinar se um determinado aplicativo está instalado no telefone, então só podemos salvar o país por meio de curvas. Se o aplicativo não puder ser acessado por um longo período, ele será o padrão. não está sendo instalado e vá para a página de download. Claro, não foi isso que eu inventei, é o que pensam os grandes da Internet. Aqui temos que subdividi-lo em duas situações.
1. Acorde diretamente
Nota: Você pode alterar o aplicativo por meio de h5. Por exemplo, visite um URL, clique no botão e abra o aplicativo. Se o aplicativo APP não estiver instalado, vá diretamente para a página de download do APP da App Store. melhor clicando. Se instalado Com o aplicativo, ele pode ser ativado nos principais navegadores móveis (navegador 360, navegador uc, navegador Sogou, navegador QQ, navegador Baidu) e cliente QQ. WeChat, cliente Sina Weibo e cliente Tencent Weibo não podem ser ativados.
O código é o seguinte:
<html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><head><script src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script><title>Clique para ativar a demonstração</title></head><body><style>#zjmobliestart {font -size:40px;}</style><!--Descrição: Você pode alterar o aplicativo por meio de h5. Por exemplo, acesse uma URL, clique no botão e abra o aplicativo. vá diretamente para o aplicativo. Página de download do APP da Store, clicando em. A compatibilidade é boa. Se o aplicativo estiver instalado, ele pode ser ativado em todos os principais navegadores móveis (navegador 360, navegador uc, navegador Sogou, navegador QQ, navegador Baidu) e cliente QQ. WeChat, cliente Sina Weibo e cliente Tencent Weibo não podem ser despertados. --><a href=zjmobile://platformapi/startapp id=zjmobliestart target=_blank>Acorde Zhejiang Mobile Mobile Business Hall! </a><script type=text/javascript> function applink(){ return function(){ var clickedAt = +new Date(function(){ !window.document.webkitHidden && setTimeout(function(){ if ( + nova data - clicado em <2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; .getElementById(zjmobliestart).onclick = applink() </script> </body></html>;2. Clique para acordar
Nota: Você pode ativar o aplicativo por meio de h5. Se você visitar um URL, poderá abrir o aplicativo diretamente. Se o aplicativo APP não estiver instalado, vá diretamente para a página de download do APP da App Store. Compatibilidade geral: pode ser ativado nos principais navegadores de telefones celulares (navegador 360, navegador uc, navegador Sogou, navegador QQ e navegador Baidu). WeChat, cliente QQ, cliente Sina Weibo e cliente Tencent Weibo não podem ser ativados.
O código é o seguinte:
<!Doctype html><html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><head> <roteiro src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script><title>Ativar demonstração diretamente</title></head><body><style>#zjmobliestart{ font -size:40px;}</style><!--Descrição: Você pode ativar o aplicativo através de h5. Se você visitar um URL, poderá abrir o aplicativo diretamente. Se o aplicativo APP não estiver instalado, pule diretamente. para o aplicativo. A página de download do APP da Loja tem compatibilidade geral: pode ser despertada em todos os principais navegadores móveis (navegador 360, navegador uc, navegador Sogou, navegador QQ, navegador Baidu). Cliente WeChat QQ, cliente Sina Weibo, cliente Tencent Weibo não podem ser despertados. --><p id=zjmobliestart>Acorde Zhejiang Mobile Mobile Business Hall! </p><script type=text/javascript> function applink(){ window.location = 'zjmobile://platformapi/startapp'; var clickedAt = +new Date; && setTimeout(function(){ if (+nova data - clickedAt <2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; ;</script> </body></html>Desta forma, nossas necessidades foram atendidas. Durante esse processo, também encontramos explicações de muitas pessoas entusiasmadas. A princípio, algumas pessoas não entenderam minhas necessidades e pensaram que eu estava implementando no lado do Android. Me pediram para passar o nome do pacote. Para verificar se o app está instalado, grave o método aqui, o código é o seguinte:
Para mais métodos, confira minha classe de ferramenta: CommonUtilLibrary
Outros acham que quero invocar o aplicativo local carregando o webview no aplicativo. Também irei gravá-lo aqui.
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(visualização WebView, String url) { Uri uri=Uri.parse(url); if(uri.getScheme().equals(abraham)&&uri.getHost(). equals(jingewenku.com)){ String arg0=uri.getQueryParameter(arg0); arg1=uri.getQueryParameter(arg1); }else{ view.loadUrl(url } retornar verdadeiro }});Deve-se notar também que se o aplicativo local for invocado no WeChat, o WeChat no celular usa o navegador integrado do WeChat (você pode enviar o endereço da página obtida anteriormente no servidor para qualquer um dos seus contatos, clique Enviar mensagem para abrir a página da web) Abra essa página HTML simples. Nota: Não é viável abrir diretamente o esquema: //host/datastring. O WeChat não analisará esta sequência de caracteres em uma URL. página para navegar com o WeChat O dispositivo está ligado. Depois de entrar, você verá a página que acabamos de criar. Neste momento, clicar para iniciar o aplicativo diretamente não ativará o APP instalado anteriormente. Como o WeChat o bloqueou, você precisa optar por abri-lo no navegador no menu no canto superior direito. Neste momento, alguns navegadores podem ser ativados, mas outros não. Por exemplo, se o navegador integrado na máquina de teste MX4 do autor não funcionar, o UC Browser pode ser ativado. Alguns navegadores não podem ser ativados. Consultei muitas informações e não consigo resolvê-los completamente. A única coisa que consigo pensar agora é deixar o front-end fazer um julgamento sobre o navegador que encontra o problema. não é compatível e qual navegador deve ser usado. Se algum leitor tiver uma solução, deixe uma mensagem, obrigado!
pós-escrito:
Por que não consigo ativar o aplicativo no WeChat e preciso abri-lo com um navegador?
Como o WeChat implementou proteção de esquema em todas as conexões de compartilhamento, ou seja, todas as chamadas para esquema nas conexões de compartilhamento foram bloqueadas pelo WeChat.
Então, por que alguns aplicativos podem ser evocados, como Dianping e Didi Taxi?
De uma perspectiva não técnica, por causa de Dianping e Didi Taxi, ambos são afilhados e filhos biológicos do WeChat. Ele tem um cuidado especial com seu filho.
Do ponto de vista técnico, o WeChat possui uma lista de permissões e as chamadas de esquema não serão bloqueadas para conexões compartilhadas na lista de permissões.
Não entende? Vamos dar um exemplo.
Por exemplo, o link de compartilhamento de Dianping é http://dazhongdianping.share.1.com
Correspondente à lista de permissões do WeChat, haverá um item http://dazhongdianping. Todo compartilhamento originado desta conexão não bloqueará o esquema.
Por exemplo http://dazhongdianping.share.2.com
http://dazhongdianping.share.3.com
Até mesmo uma subsidiária da Dianping pode usar http://zigongsi.dazhongdianping.share.3.com. O nome de domínio raiz também está na lista de permissões, portanto pode ser usado.
Neste ponto, todos devem compreender que é impossível contornar este problema pegando emprestado o esquema de Dianping, a menos que seu link de compartilhamento possa ser vinculado ao nome de domínio raiz de Dianping.
Esta questão deve ser explicada com clareza. Outra coisa a mencionar é que quando se trata de baixar apk, o WeChat bloqueia qualquer aplicativo, e os filhos não são exceção. , você não pode escapar usando um navegador para abri-lo.
Apêndice: Esquemas de URL para Aplicativos Comuns
1. Aplicativo padrão do sistema
| nome | Esquema de URL | Identificador do pacote |
|---|---|---|
| Safári | http:// | |
| mapas | http://maps.google.com | |
| Telefone | telefone:// | |
| SMS | SMS:// | |
| Correspondência | mailto: // | |
| iBooks | ibooks:// | |
| Loja de aplicativos | itms-apps://itunes.apple.com | |
| Música | música:// | |
| Vídeos | vídeos:// |
2. Software de terceiros comumente usado
| nome | Esquema de URL | Identificador do pacote |
|---|---|---|
| mqq:// | ||
| weixin:// | ||
| Tencent Weibo | Tencent Weibo: // | |
| Taobao | taobao: // | |
| Alipay | alipay:// | |
| sinaweibo:// | ||
| weico Weibo | weico:// | |
| Navegador QQ | navegador mqq:// | com.tencent.mttlite |
| navegador uc | golfinho:// | com.dolphin.browser.iphone.chinese |
| Abra o navegador | ohttp:// | com.oupeng.mini |
| Navegador Sogou | SogouMSE:// | com.sogou.SogouExplorerMobile |
| Mapa Baidu | baidumapa:// | com.baidu.map |
| Cromo | googlecromo:// | |
| Youku | vocêku:// | |
| Jingdong | openapp.jdmoble: // | |
| todos | renren:// | |
| Meituan | imeiituan: // | |
| Loja nº 1 | wccbyihaodian:// | |
| vou verificar | wcc:// | |
| Dicionário Youdao | yddictproapp:// | |
| Zhihu | zhihu:// | |
| Análise | dianping: // | |
| microdisco | sinavdisk:// | |
| Doubanfm | doubanradio: // | |
| Aula aberta NetEase | ntesopen:// | |
| Rei do cartão de visita completo | cartão de vídeo:// | |
| Música QQ | qqmúsica:// | |
| Vídeo Tencent | dezvídeo:// | |
| Filmes de Douban | doubanmovie: // | |
| Música na nuvem NetEase | Orfeu:// | |
| Notícias NetEase | aplicativo de notícias:// | |
| Aplicativo NetEase | aplicativo: // | |
| Loteria NetEase | tescaipiao:// | |
| Notas da nuvem Youdao | youdaonote: // | |
| Ver mais | leitor duokan: // | |
| Índice Nacional de Qualidade do Ar | Pequim suja: // | |
| Música Baidu | baidumusic:// | |
| Vá para a cozinha | xcfapp:// |
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para o estudo de todos. Também espero que todos apoiem a Rede VeVb Wulin.