Ich habe vor zwei Tagen eine WLAN-Anfrage erhalten. Ich war mehrere Tage damit beschäftigt ... Wenn der Benutzer die APP installiert hat, klicken Sie darauf, um die entsprechende APP zu öffnen Wenn es nicht installiert ist, klicken Sie, um die entsprechende APP zu öffnen. Ich habe online gesucht und gesagt, dass dies möglich ist, aber die tatsächliche Situation ist nicht optimistisch.
Natürlich ist dies nur eine der Voraussetzungen. Es gibt heutzutage auch eine Schaltfläche zum sofortigen Öffnen der H5-Seiten nicht installiert, dann zum Download springen. Dies ist eine ganz normale Strategie zur Werbung und Verkehrsumleitung. Kürzlich hat der Produktmanager eine solche Forderung gestellt, eine Download-Leiste bei geöffneter App wie die Toutiao-Funktion usw. einzurichten, und über den Rest werde ich nicht sprechen!
Kommen wir nun zum heutigen Hauptthema: Wie öffnet oder aktiviert H5 eine lokale App auf einem Mobiltelefon? Wenn man sich die Antworten auf Baidu und Google ansieht, gibt es nur zwei Arten:
Erster Weg:Durch die direkte Konfiguration des Schemas auf der Android-Seite im href im a-Tag des HTML folgen Sie diesen natürlich, wenn andere Hostkonfigurationen vorhanden sind. Die Konfiguration und der Code auf der Android-Seite lauten wie folgt:
Android-seitige Konfiguration:
<activity android:name = .MainActivity> <intent-filter> <action android:name = android.intent.action.MAIN /> <category android:name = android.intent.category.LAUNCHER /> </intent-filter> <intent-filter> <action android:name=android.intent.action.VIEW/> <category android:name=android.intent.category.DEFAULT/> <category android:name=android.intent.category.BROWSABLE/> <data android:host=jingewenku.com android:scheme=abraham/> </intent-filter> </aktivität>
Hinweis: Wenn dies auf der Startseite konfiguriert ist, muss es neben der Beschriftung platziert werden, andernfalls wird nach der Ausführung kein Symbol der mobilen App angezeigt. Beachten Sie, dass das Schemaprotokoll in Kleinbuchstaben geschrieben sein muss, andernfalls gibt es eine Ausnahme das kann nicht antworten!
HTML-Code:
<html> <head> <meta http-equiv=Content-Type content=text/html; charset=UTF-8> <title>Titel hier einfügen</title> </head> <body> <a href=abraham: //jingewenku.com/?pid=1>App öffnen</a><br/> </body></html>
Hier werfen wir einen Blick auf das Format des Schema-Splicing-Protokolls:
< a href=[scheme]://[host]/[path]?[query]>Anwendung starten</a>
Die Bedeutung jedes Elements ist wie folgt:
Schema: Identifizieren der gestarteten App. ※Details werden später beschrieben
Gastgeber: passende Beschreibung
Pfad: notwendiger Schlüssel beim Übergeben des Werts ※Es ist in Ordnung, wenn er nicht verfügbar ist
Abfrage: Holen Sie sich den Schlüssel und den Wert des Werts. ※Es ist in Ordnung, wenn Sie ihn nicht haben
Das Obige kann natürlich zum Öffnen der lokalen App verwendet werden, sofern die App vorhanden ist, andernfalls erfolgt keine Antwort.
Sie fragen sich vielleicht: Ist das in Android konfigurierte Schemaprotokoll nicht im obigen HTML-Code konfiguriert? Ich habe die PID offensichtlich nicht konfiguriert. Warum sollte ich das schreiben? Dies liegt daran, dass wir beim Aufrufen der lokalen App möglicherweise einige Parameter an die App übergeben. Wir müssen sie nur in oncreate abrufen.
Intent intent = getIntent(); Uri uri = intent.getData(); if (uri != null) { String pid = uri.getQueryParameter(pid);Wenn Sie das Schemaprotokoll dennoch in Android konfigurieren möchten, können Sie auch Folgendes tun:
Uri uri = getIntent().getData();if(uri != null) { // Vollständige URL-Informationen String url = uri.toString(); Log.e(TAG, url: + uri); scheme = uri.getScheme(); Log.e(TAG, scheme: + scheme); // Host-Teil String host = uri.getHost(); host); //Portteil int port = uri.getPort(); Log.e(TAG, host: + port); //Zugriffspfad String path = uri.getPath(); path); List<String> pathSegments = uri.getPathSegments(); // Abfrageteil String query = uri.getQuery(); //Den angegebenen Parameterwert abrufen String GoodsId = uri.getQueryParameter(GoodsId); Log.e(TAG, GoodsId: + GoodsId);}So ermitteln Sie, ob ein Schema gültig ist:
PackageManager packageManager = getPackageManager();Intent intent = newIntent(Intent.ACTION_VIEW, Uri.parse(abraham://jingewenku.com:8888/goodsDetail?goodsId=10011002));List<ResolveInfo> Activities = packageManager.queryIntentActivities(intent, 0);booleanisValid = !activities.isEmpty();if(isValid) { startActivity(intent);}Diese Methode ist auch die beliebteste auf Baidu, bringt jedoch ein Problem mit sich. Wenn der Benutzer eine Verbindung auf der Seite hat, muss er darauf klicken, um die entsprechende APP zu öffnen installiert, klicken Sie, um die entsprechende Einstellungsverbindung zu öffnen. Dies entspricht offensichtlich nicht den Anforderungen und kann nur für einige individuelle Anforderungen verwendet werden.
Zweiter Weg:Da die Konfiguration des Schemaprotokolls in href nicht möglich ist, kann dies nur über js-Code erreicht werden. Nur auf diese Weise kann die App nach eigenem Ermessen geöffnet werden, wenn sie verfügbar ist, und zum Herunterladen zum Download-Link springen, wenn dies nicht der Fall ist.
Wir wissen, dass js nicht feststellen kann, ob eine bestimmte App auf dem Telefon installiert ist. Daher können wir das Land nur über Kurven speichern. Wenn die App längere Zeit nicht aufgerufen werden kann, wird sie standardmäßig aufgerufen nicht installiert ist, und springen Sie dann zur Download-Seite. Das ist natürlich nicht das, was ich mir ausgedacht habe, sondern das, was die großen Leute im Internet denken. Hier müssen wir es in zwei Situationen unterteilen.
1. Direkt aufwachen
Hinweis: Sie können die App über h5 ändern. Besuchen Sie beispielsweise eine URL, klicken Sie auf die Schaltfläche und öffnen Sie die App. Wenn die App nicht installiert ist, springen Sie direkt zur APP-Download-Seite des App Store Besser durch Klicken. Wenn die App installiert ist, kann sie in den wichtigsten mobilen Browsern (360-Browser, UC-Browser, Sogou-Browser, QQ-Browser, Baidu-Browser) und im QQ-Client aktiviert werden. WeChat, Sina Weibo-Client und Tencent Weibo-Client können nicht aktiviert werden.
Der Code lautet wie folgt:
<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>Klicken Sie hier, um die Demo zu aktivieren</title></head><body><style>#zjmobliestart {font -size:40px;}</style><!--Beschreibung: Sie können die App beispielsweise über h5 ändern, auf die Schaltfläche klicken und die Anwendung öffnen. Springen Sie direkt zur App. Laden Sie die APP-Downloadseite des Stores herunter, indem Sie darauf klicken. Die Kompatibilität ist gut. Wenn die App installiert ist, kann sie in allen gängigen mobilen Browsern (360-Browser, UC-Browser, Sogou-Browser, QQ-Browser, Baidu-Browser) und QQ-Client aktiviert werden. WeChat, Sina Weibo-Client und Tencent Weibo-Client können nicht aktiviert werden. --><a href=zjmobile://platformapi/startapp id=zjmobliestart target=_blank>Wach auf, 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 ( +neues Datum – clickedAt < 2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; } }, 500) }; .getElementById(zjmobliestart).onclick = applink(); </script> </body></html>2. Klicken Sie zum Aufwachen
Hinweis: Sie können die App über h5 aktivieren, um die Anwendung direkt zu öffnen. Wenn die Anwendungs-APP nicht installiert ist, springen Sie direkt zur APP-Download-Seite des App Store. Allgemeine Kompatibilität: Es kann in den wichtigsten Browsern für Mobiltelefone aktiviert werden (360-Browser, UC-Browser, Sogou-Browser, QQ-Browser und Baidu-Browser). WeChat, QQ-Client, Sina Weibo-Client und Tencent Weibo-Client können nicht aktiviert werden.
Der Code lautet wie folgt:
<!Doctype html><html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><head> <Skript src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script><title>Demo direkt aufwecken</title></head><body><style>#zjmobliestart{ Schriftgröße: 40 Pixel; zur App. Die APP-Downloadseite des Stores ist allgemein kompatibel: Sie kann in allen gängigen mobilen Browsern aufgerufen werden (360-Browser, UC-Browser, Sogou-Browser, QQ-Browser, Baidu-Browser). WeChat QQ-Client, Sina Weibo-Client, Tencent Weibo-Client können nicht aktiviert werden. --><p id=zjmobliestart>Wach auf, Zhejiang Mobile Mobile Business Hall! </p><script type=text/javascript> function applink(){ window.location = 'zjmobile://platformapi/startapp'; var clickedAt = +new Date; && setTimeout(function(){ if (+new Date - clickedAt < 2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; } }, 500) }applink() ;</script> </body></html>Auf diese Weise sind wir auf die Erklärungen vieler begeisterter Menschen gestoßen. Zuerst haben einige Leute meine Bedürfnisse nicht verstanden und dachten, ich würde sie auf der Android-Seite umsetzen. Sie haben mich gebeten, den Paketnamen zu übergeben. Um zu überprüfen, ob die App installiert ist, notieren Sie die Methode hier. Der Code lautet wie folgt:
Weitere Methoden finden Sie in meiner Toolklasse: CommonUtilLibrary
Andere denken, ich möchte die lokale App aufrufen, indem ich die Webansicht in die App lade. Der Code lautet wie folgt:
webView.setWebViewClient(new WebViewClient(){ @Override public boolean ShouldOverrideUrlLoading(WebView view, String url) { Uri uri=Uri.parse(url); if(uri.getScheme().equals(abraham)&&uri.getHost(). equal(jingewenku.com)){ String arg0=uri.getQueryParameter(arg0); arg1=uri.getQueryParameter(arg1); }else{ view.loadUrl(url } return true;Es ist auch zu beachten, dass, wenn die lokale App in WeChat aufgerufen wird, der WeChat auf dem Mobiltelefon den integrierten Browser von WeChat verwendet (Sie können die Adresse der zuvor erhaltenen Seite auf dem Server an jeden Ihrer Kontakte senden, klicken Sie auf Senden Sie eine Nachricht, um die Webseite zu öffnen. Hinweis: Es ist nicht möglich, diese Zeichenfolge direkt in eine URL zu analysieren Seite zum Durchsuchen mit WeChat Das Gerät ist eingeschaltet. Nach der Eingabe sehen Sie die Seite, die wir gerade erstellt haben. Wenn Sie zu diesem Zeitpunkt klicken, um die Anwendung direkt zu starten, wird die zuvor installierte APP nicht aktiviert. Da WeChat sie blockiert hat, müssen Sie im Menü in der oberen rechten Ecke auswählen, ob sie im Browser geöffnet werden soll. Zu diesem Zeitpunkt können einige Browser aktiviert werden, andere jedoch nicht. Wenn beispielsweise der integrierte Browser auf dem MX4-Testcomputer des Autors nicht funktioniert, kann UC Browser aktiviert werden. Einige Browser können nicht aufgeweckt werden und können das Problem jetzt nicht vollständig lösen Es wird nicht unterstützt und welcher Browser sollte verwendet werden. Wenn jemand eine Lösung hat, hinterlassen Sie bitte eine Nachricht, vielen Dank!
Nachwort:
Warum kann ich die App in WeChat nicht aktivieren und muss sie mit einem Browser öffnen?
Da WeChat die Schema-Abschirmung für alle Sharing-Verbindungen implementiert hat, wurden alle Schema-Aufrufe in den Sharing-Verbindungen von WeChat blockiert.
Warum können also einige Anwendungen wie Dianping und Didi Taxi hervorgerufen werden?
Aus nichttechnischer Sicht sind Dianping und Didi Taxi sowohl Patensöhne als auch leibliche Söhne von WeChat. Er kümmert sich besonders um seinen Sohn.
Aus technischer Sicht verfügt WeChat über eine Whitelist und Schemaaufrufe werden für gemeinsame Verbindungen in der Whitelist nicht blockiert.
Verstehst du nicht? Geben wir ein Beispiel.
Der Freigabelink von Dianping lautet beispielsweise http://dazhongdianping.share.1.com
Entsprechend der WeChat-Whitelist gibt es einen Eintrag http://dazhongdianping. Alle von dieser Verbindung ausgehenden Freigaben blockieren das Schema nicht.
Zum Beispiel http://dazhongdianping.share.2.com
http://dazhongdianping.share.3.com
Sogar eine Tochtergesellschaft von Dianping kann http://zigongsi.dazhongdianping.share.3.com verwenden. Der Stammdomänenname steht ebenfalls auf der Whitelist und kann daher verwendet werden.
An dieser Stelle sollte jedem klar sein, dass es unmöglich ist, dieses Problem zu umgehen, indem man Dianpings Schema ausleiht, es sei denn, Ihr Freigabelink kann mit dem Root-Domainnamen von Dianping verknüpft werden.
Diese Frage sollte klar erklärt werden: Wenn es um das Herunterladen von APK geht, blockiert WeChat jede Anwendung, und Söhne sind keine Ausnahme. Wenn Sie also einen Download-Link bereitstellen möchten, spielt es keine Rolle, ob Sie ein Sohn sind oder nicht , Sie können es nicht vermeiden, es mit einem Browser zu öffnen. Zu den einfachen Methoden gehört.
Anhang: URL-Schemata für gängige Anwendungen
1. Standardanwendung des Systems
| Name | URL-Schema | Bundle-ID |
|---|---|---|
| Safari | http:// | |
| Karten | http://maps.google.com | |
| Telefon | tel:// | |
| SMS | SMS:// | |
| Post | mailto:// | |
| iBooks | ibooks:// | |
| App Store | itms-apps://itunes.apple.com | |
| Musik | Musik:// | |
| Videos | Videos:// |
2. Häufig verwendete Software von Drittanbietern
| Name | URL-Schema | Bundle-ID |
|---|---|---|
| mqq:// | ||
| weixin:// | ||
| Tencent Weibo | TencentWeibo:// | |
| Taobao | taobao:// | |
| Alipay | alipay:// | |
| sinaweibo:// | ||
| weico Weibo | weico:// | |
| QQ-Browser | mqqbrowser:// | com.tencent.mttlite |
| UC-Browser | Delphin:// | com.dolphin.browser.iphone.chinese |
| Öffnen Sie den Browser | ohttp:// | com.oupeng.mini |
| Sogou-Browser | SogouMSE:// | com.sogou.SogouExplorerMobile |
| Baidu-Karte | baidumap:// | com.baidu.map |
| Chrom | googlechrome:// | |
| Youku | youku:// | |
| Jingdong | openapp.jdmoble:// | |
| alle | renren:// | |
| Meituan | imeituan:// | |
| Nr. 1 Geschäft | wccbyihaodian:// | |
| Ich werde es überprüfen | wcc:// | |
| Youdao-Wörterbuch | yddictproapp:// | |
| Zhihu | zhihu:// | |
| Rezension | dianping:// | |
| Mikroplatte | sinavdisk:// | |
| Doubanfm | doubanradio:// | |
| Offene NetEase-Klasse | ntesopen:// | |
| Der Allround-Visitenkarten-König | Kamerakarte:// | |
| QQ-Musik | qqmusic:// | |
| Tencent-Video | zehnvideo:// | |
| Douban-Filme | doubanmovie:// | |
| NetEase Cloud Music | Orpheus:// | |
| NetEase-Neuigkeiten | newsapp:// | |
| NetEase-Anwendung | apper:// | |
| NetEase-Lotterie | ntescaipiao:// | |
| Youdao Cloud-Notizen | youdaonote:// | |
| Mehr sehen | duokan-reader:// | |
| Nationaler Luftqualitätsindex | dirtybeijing:// | |
| Baidu-Musik | baidumusic:// | |
| Geh in die Küche | xcfapp:// |
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Ich hoffe auch, dass jeder das VeVb Wulin Network unterstützt.