検索
ホームページウェブフロントエンドH5 チュートリアルAPPネイティブページを起動するH5インスタンスメソッド

APPネイティブページを起動するH5インスタンスメソッド

Jun 25, 2017 am 10:02 AM
html5ネイティブ起動する要約する

長い間ブログを書いていませんでしたが、最近、H5 でアプリのネイティブ ページを立ち上げるという要望があり、その過程でいくつかの落とし穴に遭遇しましたので、特別にまとめてみました。

1. クライアントのプラットフォームとブラウザでアクセスするかどうかを判断する必要があります

1. クライアントの判断

Android はオープンなため、Android と IOS のシステムでは処理が異なります。ブラウザで タグとメタ タグを渡すと、ブラウザ アプリが携帯電話からアプリケーションを開く許可を取得してアプリを起動できます。

IOS 側では、IOS9 以降のシステムでは、APP 開発プロセス中に設定とロジック コードの記述を追加でき、ブラウザがドメイン名にアクセスしようとする前に、システムがドメイン名に対応する APP を開きます。 . 閉店するメリットはまだあります。

そのため、まずクライアントで Android システムか IOS システムかを判断する必要があります。判断コードは次のとおりです

function isInIos(){var userAgentInfo = navigator.userAgent ,
        Agents = ["iPhone" , "iPad", "iPod"];for(var v = 0; v  0) {          return true;
        }
    }return false;
}
2. どちらでも構いません。 WeChat でクライアント Android/IOS が動作している場合、プラットフォームにアクセスするときに問題が発生します。つまり、セキュリティ上の理由により、会社がスキーマ プロトコルをブロックすることになります。 WeChatのパートナーであり、ホワイトリストに参加している場合、IOSシステムのアプリに対応するアプリストアのダウンロードページにアクセスできますが、WeChatがアプリストアのURLをブロックしてアクセスできなくなることがよくあります。より便利な方法は、IOS であっても Android であっても、WeChat ブラウザで App Store のダウンロード ページを開くことです (IOS は最終的に

appstore に移動します)。ここでの要件は、ユーザーに「...」をクリックしてデフォルトのブラウザで開くように求めることです。

WeChat かどうかを判断するためのコードは次のとおりです:

function isInWx(){var agent = window.navigator.userAgent.toLowerCase();return agent.match(/MicroMessenger/i) == 'micromessenger';
}

2. 原則

まず、電話が Andorid であるか IOS であるかを判断することは不可能です。ブラウザ内の JS を介して特定のソフトウェアが搭載されている APP の場合、このブラウザがモバイル アプリケーション リストを読み取る権限を持っている場合でも、クエリするための固定の外部 API はありません。 H5 スタートアップ APP は、基本的に

URL スキームを通じて APP を開きます。APP は、1 つ以上の URL スキームを設定して、システムにこの APP がインストールされている場合、その URL スキームにアクセスします。このアプリを開く許可を要求します。実際、これはブラウザ アプリとみなすことができます

別のアプリを開くには、iOS では UIApplication の canOpenUrl メソッドを使用して、URL スキームが対応する APP を開けるかどうかを検出できます。Android も同様です。もちろん、JS ジャンプ URL スキームが応答しない場合は、携帯電話にこのアプリがインストールされていないことも意味します。

3. Android プラットフォーム

まず、AndroidManifest.xml を編集して、主に 2 番目の を追加します

<activity>  <intent-filter>  <action></action>      <category></category>  </intent-filter>  <intent-filter>  <action></action>      <category></category>      <category></category>      <data></data>  </intent-filter></activity>

たとえば、これはアプリの一意の識別子に最適です。それ以外の場合、H5 が起動すると、起動する APP を選択するための選択ボックスが表示されます。そして、ホストはページを開始することを意味します。実際には、これは com.android.sky のようなパッケージ名に置き換える必要があります。

この場合、完全な URL は wushang://android?data=sky で、その後にパラメーター転送が続きます。アクティビティでは、次のコードを使用してパラメーターを取得できます

public void onCreate(Bundle savedInstanceState) {             
     Uri uridata = this.getIntent().getData();             
     String mydata = uridata.getQueryParameter("data");            
}
。その後、文字列インターセプトなどを行うことができます。

次に、フロントエンド コードについて説明します。ここには 2 つの状況があります
1. ページが更新されたら、APP を呼び出す許可をリクエストします

これは比較的簡単で、メタ タグをただし、

<meta>

がマークされており、ページが更新されると、このリンクにアクセスしてアプリを起動できます。ただし、Apple システムの Safari ブラウザの場合、このメタを使用してヘッダーにアクセスするとエラー メッセージが表示されるため、ページをレンダリングするときにクライアントの

一般クラスを介してこのヘッダーを追加できます。バックエンド。

2. クリック イベントを通じて APP を呼び出す最も簡単な方法は、もちろん、次のように a タグを直接使用することです
<a>open Android app</a>

しかし、実際の使用では、クライアントのプラットフォーム タイプと、それがクライアントであるかどうかを知る必要があります。 WeChat の組み込みブラウザ内で判断する必要があるため、このアプローチは絶対に受け入れられません。

次に、開発プロセス中に遭遇した問題について話し、記録しましょう。というのも、ここでモバイル端末で使用しているツールライブラリがzeptoで、使用しているクリックイベントがtapなのですが、tapを処理に使用する場合、APPを起動するために何度もクリックする必要があることがよくあります

<script>
  $(&#39;#go&#39;).tap(function(){
      window.location.href = "wushang://android";
  });</script>

。具体的な理由は、タップイベントかもしれません。その後、いくつか調べた後、クリックイベントを使用するか、a タグでハンドラー関数を直接マークしてこの問題を回避しました
<a>open Android app</a>
   open<script></script><script></script><script>$(&#39;#go&#39;).click(function () {       if(publicFun.isIos()){
          alert(&#39;it is IOS&#39;)
       }else{
          window.location.href = "wushang://android";
       }
    });function startApp(){       if(publicFun.isIos()){
          alert(&#39;it is IOS&#39;)
       }else{
          window.location.href = "wushang://android";
       }
    }</script>

。そこで、今後この種の問題が発生した場合は、これら 2 つの方法を使用することにしました。以下が実際の処理関数です

 window.startApp = function(){     //启动APP if(publicFun.isInWx()){     //微信中alert("请在浏览器中打开");
     }else{      //非微信中if(publicFun.isIos()){    //IOS系统,直接去itunes中,既可以下载也可以打开window.location.href = "https://itunes.apple.com/cn/app/[name]/id[id]";
        }else{      //android系统,通过定时器的方式,判断是否安装有APPvar hasApp = true , t = 1000;
            setTimeout(function () {  //没有安装APP则跳转至应用宝下载,延时时间设置为2秒  if(!hasApp) window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=[name]";
            } , 2000);var t1 = Date.now();
            window.location.href = "wushang://android";
            setTimeout(function () {    //t的时间就是出发APP启动的时间,若APP启动了,再次返回页面时t2这行代码执行,hasApp即为true。反之若APP没有启动即为false  var t2 = Date.now();
              hasApp = !(!t1 || t2 - t1 <div class="cnblogs_code">
<p>実際には、アプリに直接ジャンプするという非常に簡単な方法があります。 Android であろうと IOS であろうと、また WeChat であろうと非 WeChat であろうと。 App Store のダウンロード ページには、ダウンロードと開く 2 つの機能があります (IOS プラットフォーム上の場合は、App Store に接続して行います) </p>
<p> </p>
<p> 4. IOS プラットフォーム </p>
<p> ios9 と実際、iOS 9 ではユニバーサル リンクというより良い解決策が提供されています。 </p>
<p>これは、iOS9 で導入された機能です。アプリがユニバーサル リンクをサポートしている場合、従来の HTTP リンクを通じて簡単にアプリを起動できます (アプリが既に iOS デバイスにインストールされている場合は、追加の判断などは必要ありません)。 、または Web ページを開きます (アプリが iOS デバイスにインストールされていません)。もっと簡単に説明すると、iOS9 より前は、Safari、UIWebView、WKWebView などのさまざまなブラウザから APP を起動する必要がある場合、通常はスキームを使用することしかできませんでした。 </p>
<p>上記は、インターネット上のユニバーサル リンクについての説明から来ています。簡単に言うと、この URL に開発プラットフォームに送信した設定ファイルのルールに一致するコンテンツが含まれている場合に、この URL にアクセスします。アプリを開けない場合、iOS システムはブラウザーでアクセスしたいリンクにリダイレクトします。これは非常に優れた属性です。この属性を通じて WeChat の傍受を回避し、iOS9 でアプリを開くことができるからです。 </p>
<p>つまり、上記のクリック イベントは、アプリ ストアにアクセスするためのものです。アプリがインストールされている場合、ブラウザーがアクセスした時点ですでにアプリ内にあるからです。 </p>
<p>これらはすべて IOS の設定に関するものなので、これ以上は書きません。パラメータの受け渡しとページの方向に関しては、実際には UIWebView で現在接続されている URL を取得し、文字列の分割と検証を実行してどのページに移動するかを決定してパラメータ値を取得するのと同じです。 </p>
<p></p>
</div>

以上がAPPネイティブページを起動するH5インスタンスメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

H5とHTML5は異なる概念です。HTML5は、新しい要素とAPIを含むHTMLのバージョンです。 H5は、HTML5に基づくモバイルアプリケーション開発フレームワークです。 HTML5はブラウザを介してコードを解析およびレンダリングしますが、H5アプリケーションはコンテナを実行し、JavaScriptを介してネイティブコードと対話する必要があります。

H5コードの構成要素:キー要素とその目的H5コードの構成要素:キー要素とその目的Apr 23, 2025 am 12:09 AM

HTML5の重要な要素には、最新のWebページの構築に使用される、、,,,,などが含まれます。 1.ヘッドコンテンツを定義します。2。リンクをナビゲートするために使用されます。3。独立した記事のコンテンツを表します。4。ページコンテンツを整理します。5。サイドバーコンテンツを表示します。

HTML5およびH5:一般的な使用法の理解HTML5およびH5:一般的な使用法の理解Apr 22, 2025 am 12:01 AM

HTML5とHTML5の略語であるHTML5とH5の間に違いはありません。 1.HTML5はHTMLの5番目のバージョンであり、Webページのマルチメディア関数とインタラクティブ機能を強化します。 2.H5は、HTML5ベースのモバイルWebページまたはアプリケーションを参照するためによく使用され、さまざまなモバイルデバイスに適しています。

HTML5:現代のウェブのビルディングブロック(H5)HTML5:現代のウェブのビルディングブロック(H5)Apr 21, 2025 am 12:05 AM

HTML5は、W3Cによって標準化されたHyperText Markup言語の最新バージョンです。 HTML5は、新しいセマンティックタグ、マルチメディアサポート、フォームの強化、Web構造の改善、ユーザーエクスペリエンス、SEO効果を導入します。 HTML5は、Webページ構造をより明確にし、SEO効果をより良くするために、、、、、、などの新しいセマンティックタグを導入します。 HTML5はマルチメディア要素をサポートしており、サードパーティのプラグインは不要で、ユーザーエクスペリエンスと読み込み速度が向上します。 HTML5はフォーム関数を強化し、ユーザーエクスペリエンスを向上させ、フォーム検証効率を向上させるなどの新しい入力タイプを導入します。

H5コード:クリーンで効率的なHTML5の書き込みH5コード:クリーンで効率的なHTML5の書き込みApr 20, 2025 am 12:06 AM

クリーンで効率的なHTML5コードを書き込む方法は?答えは、タグのセマンティック、構造化されたコード、パフォーマンスの最適化、一般的な間違いを回避することにより、一般的な間違いを避けることです。 1.コードの読みやすさとSEO効果を改善するには、セマンティックタグなどを使用します。 2。適切なインデントとコメントを使用して、コードを構造化して読みやすいままにします。 3.不必要なタグを減らし、CDNを使用してコードを圧縮することにより、パフォーマンスを最適化します。 4.タグが閉じていないなどの一般的な間違いを避け、コードの有効性を確認してください。

H5:ウェブ上のユーザーエクスペリエンスをどのように強化するかH5:ウェブ上のユーザーエクスペリエンスをどのように強化するかApr 19, 2025 am 12:08 AM

H5は、マルチメディアサポート、オフラインストレージ、パフォーマンスの最適化により、Webユーザーエクスペリエンスを向上させます。 1)マルチメディアサポート:H5と要素は、開発を簡素化し、ユーザーエクスペリエンスを向上させます。 2)オフラインストレージ:WebStorageとIndexEdDBは、エクスペリエンスを改善するためにオフラインで使用できるようにします。 3)パフォーマンスの最適化:ウェブワーカーと要素は、パフォーマンスを最適化して帯域幅の消費を削減します。

H5コードの分解:タグ、要素、属性H5コードの分解:タグ、要素、属性Apr 18, 2025 am 12:06 AM

HTML5コードは、タグ、要素、属性で構成されています。1。タグはコンテンツタイプを定義し、などの角度ブラケットに囲まれています。 2。要素は、startタグ、内容、および内容などのエンドタグで構成されています。 3。属性は、開始タグのキー値のペアを定義し、ような関数を強化します。これらは、Web構造を構築するための基本ユニットです。

H5コードの理解:HTML5の基礎H5コードの理解:HTML5の基礎Apr 17, 2025 am 12:08 AM

HTML5は、最新のWebページを構築するための重要なテクノロジーであり、多くの新しい要素と機能を提供します。 1。HTML5は、Webページの構造とSEOを強化するなどのセマンティック要素を導入します。 2。プラグインなしのマルチメディア要素と埋め込みメディアをサポートします。 3.フォームは、新しい入力タイプと検証プロパティを強化し、検証プロセスを簡素化します。 4.オフラインおよびローカルストレージ機能を提供して、Webページのパフォーマンスとユーザーエクスペリエンスを向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。