ホームページ  >  記事  >  ウェブフロントエンド  >  JS はアプリ実装コードをプルアップまたはダウンロードします

JS はアプリ実装コードをプルアップまたはダウンロードします

高洛峰
高洛峰オリジナル
2017-02-23 17:23:451630ブラウズ

この製品は、携帯電話の Web ページを使用して、会社のアプリがインストールされているかどうかを確認します。インストールされていない場合は、アプリを起動します。

色々と情報を確認してみた結果、かなり納得できる方法をまとめました。

アプリ起動の原則は、js アドレスとネイティブ アドレスを 1 つのアドレスに統合することです (例: qiyimobile://self/qiyi.madeindexpage)。アプリがインストールされている場合、ブラウザーはリクエストを開始し、リクエストをインターセプトして開きます。

以下はAndroidのコード構成です。実はスキームとホストをjs側で統一する必要があります

<span style="font-size:18px;"><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:scheme="qiyimobile"  
      android:host="self/qiyi.madeindexpage"  
      android:pathPrefix="/**"> 
     </data> 
</intent-filter></span>

js側は少し面倒です。アプリを起動する方が簡単な場合は、または window.location.href="**" を介して直接接続してください。ただし、ここで問題が発生します。つまり、一部の携帯電話は、アプリがインストールされていないときに、以前に設定したプロトコルを認識して Web ページを開こうとしますが、当然、Web ページが見つからないと報告します。ここで使用されている iframe メソッドは、互換性がわずかに優れています。

 var ifr = document.createElement(&#39;iframe&#39;);
 ifr.src = &#39;qiyimobile://self/qiyi.madeindexpage&#39;;
 document.body.appendChild(ifr);

アプリが携帯電話にインストールされていない場合、次のように遅延後に直接ジャンプすれば十分だと多くの人が言います

window.location.href=“打开地址”
 setTimeout(function() {  
  window.location.href=“下载地址”
      }, 500);

もちろんです。 , これも問題です。一部の携帯電話では、アプリを起動してもタイマーが自動的にクリアされません。つまり、アプリがインストールされているかどうかに関係なく、500 ミリ秒後にページがダウンロード ページにジャンプします。したがって、ダウンロードページに飛ぶ必要があるかどうかの判断が最も面倒です。最後に、次のことを試してみるのがより良い解決策です。

アプリを開いてアドレスを取得した後、その差が一定時間以上になると、アプリがインストールされたことを意味します。差が小さい場合は、アプリが開かれていないことを意味し、ダウンロード ページにジャンプする必要があります。

最終的なコードは次のとおりです

downloadapp.addEventListener(&#39;click&#39;, function() {
      var start = new Date();//记录初始时间
      var t = 500;
      var ifr = document.createElement(&#39;iframe&#39;);
      ifr.src = &#39;qiyimobile://self/qiyi.madeindexpage&#39;;//打开app
      document.body.appendChild(ifr);
      ifr.onload = function() {
      };
      ifr.style.display=&#39;none&#39;;
      setTimeout(function() {
        document.body.removeChild(ifr);
        var end = new Date();//记录结束时间
        console.log(end - start)
        if (end - start <= (t + 30)) {//两者之差小于30ms时跳转到下载页
          window.location.href = "https://www.baidu.com"
        }
      }, t);
    })

上記は編集者が紹介したアプリをプルしたりダウンロードしたりするためのJS実装コードです。ご不明な点がございましたら、お役に立てれば幸いです。メッセージを残してください、シャオ 編集者が全員にすぐに返信します。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。

JS の実装コードのプルアップやアプリのダウンロードに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。