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

高洛峰
リリース: 2017-02-23 17:23:45
オリジナル
1663 人が閲覧しました

この製品は、携帯電話の 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 サイトに注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!