最近、友人が私にこの質問をしました。最初にプロジェクトの要件を説明します。ユーザーがアプリを持っていない場合は、QR コードをスキャンしてアプリを開きます。
Web ページを使用してアプリを直接呼び出すことはできません。最初にネイティブ側でいくつかの設定を行う必要があります。
まず、AndroidとAppleでは通話方法が異なります。
そのため、最初に端末を判断する必要があります。
var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器 var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
Apple はヘッダー -id= で app-id
以下は Apple のコードです
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name='apple-itunes-app' content='app-id=1115968341'> <title></title> </head> <body> <a href="https://itunes.apple.com/cn/app/yi-fang-kuai-le-xue-tang/id1115968341?mt=8" id="openApp">点击打开</a> <script type="text/javascript"> //苹果 document.getElementById('openApp').onclick = function(e){ // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为 // 否则打开a标签的href链接 var ifr = document.createElement('iframe'); ifr.src = 'iosefunbox://'; ifr.style.display = 'none'; document.body.appendChild(ifr); window.setTimeout(function(){ document.body.removeChild(ifr); },3000) }; </script> </body> </html>
ここでの ifr.src は、アプリを開くためのプロトコル パスです。Android と Apple では異なります。
Android を使用している場合は、直接開く必要はありません。
こうすることで、1 つの Web ページにそれらを集めることができます。
上記のリンクは Tencent App Store に直接ジャンプします。
Webページをスキャンしてアクセスすれば問題ありません
でも、何かが起こりそうな予感がして、WeChatでスキャンしたら騙されました。 Android はリンクを開くだけで、WeChat によってインターセプトされるためアプリにジャンプできません。Apple の場合も同様です。唯一の解決策は、右上隅をクリックしてブラウザで開くように促すことです。問題ありません。この方法は無力な手段でしたが、後に Apple マシン向けの解決策が見つかり、リンク A のジャンプは Tencent App Store にリストされているリンクに直接ジャンプし、その後 WeChat が内部で処理して自動的に App Store にジャンプします。
最後は統合コードです。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no"> </head> <body> <a href="http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile" id="openApp">点击打开</a> <script type="text/javascript"> //安卓 // /**/window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile"; // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为 // 否则打开a标签的href链接 var ifr = document.createElement('iframe'); ifr.src = 'efunbox://efunbox.app/efunbox/open'; ifr.style.display = 'none'; document.body.appendChild(ifr); window.setTimeout(function(){ document.body.removeChild(ifr); },3000); </script> </body> </html>
追加:
QRコードをスキャンしてアプリに移動します
1. アプリがインストールされているかどうかを確認します
2. プロジェクトターゲットでschemurlを開き、:/を追加します。 /