1. 程式人生 > >如何在HTML網頁中調起APP?

如何在HTML網頁中調起APP?

首先, 這個需要提前跟客戶端開發人員商定協議名稱,用URI Scheme作為HTML頁面與客戶端的通訊協議(這個很重要)。這裡的URI Scheme字首不是一般的http://,而是由客戶端開發者定義的,一般在寫程式的時候就會設定的了。然後剩下的部分就像普通的 URL 地址一樣,需要大家來約定 URI Scheme 具體如何,例如引數是什麼等等。

那麼如何去建立這個本地協議呢?

其實就是在app中將http協議轉換為本地協議,具體怎麼轉換,不在本討論範圍。但需要在app裡面對配置檔案做一下設定(一般是在manifest.xml檔案的activity的intent filter裡面):
這裡寫圖片描述
好比微信客戶端的是以 weixin:// 為字首:開啟微信客戶端。用手機瀏覽器,就可以開啟微信客戶端,前提是你需要安裝微信客戶端。
現在已經可以呼叫到客戶端了,但是咱們好像落下了一個問題,如果使用者沒有需要調開的客戶端怎麼辦,總不能讓使用者傻傻的在當前頁面等待,那麼咱們就需要做一個判斷,來判斷使用者是否有此軟體。
判斷客戶端
現在大體的思路有了,咱們現在需要明確的是,怎麼做到判斷是否有軟體並且怎麼下載。
這裡我是通過一個隱藏的iframe做到的。因為iframe既可以判斷使用者是否安裝客戶端,也可以停留在當前頁面。
具體程式碼如下:

/*
*   @param schemaUrl 想要開啟的APP的URI Scheme
*   @param fail      如果開啟失敗(手機沒有安裝APP)時執行的函式
*/
1 function openApp(schemaUrl, func) {
2       //建立一個iframe用於存放想要開啟的APP的URI Scheme
3       var ifr = document.createElement('iframe'),
4           t = 500,
5           t1,
6           timeout;

7       ifr.style.display = 'none'
; 8 document.body.appendChild(ifr); 9 t1 = Date.now(); 10 ifr.src = schemaUrl; 11 timeout = setTimeout(function() { 12 var t2 = Date.now(); 13 if (t2 - t1 < t + 100) { 14 if (typeof fail == 'function') { 15 fail(); 16 } else
{ 17 location.href = fail; 18 } 19 } 20 document.body.removeChild(ifr); 21 }, t) 22 }
簡單解釋一下:

如果移動裝置中安裝了相應的APP的話, 此時裝置回去調起APP, 那麼此時程式碼是暫時不執行的, 會有一小段時間是去調起APP, 調起完成之後再回來執行setTimeout裡面的函式體, 那麼此時t2-t1得到的結果(所消耗的時間)會相對較長, 大於t+100, 因此不會執行條件語句中的程式碼. 而如果移動裝置中沒有安裝對應的APP的話, 程式碼就會一直往下走, 那麼t2-t1就基本上等於t, 因此t2-t1 < t+100, 因此會執行setTimeout裡面的函式體, 這裡可以提醒使用者裝置中沒有安裝APP, 或者跳轉到軟體商店下載APP.

最後介紹一下什麼是apps custom url schemes?

其實就是你與app約定的一個協議URL,在iOS客戶端或者Android客戶端中可以設定一個URL Scheme。例如,設定URL Scheme:app,然後其他的程式就可以通過“ URLString=app://”呼叫該應用。還可以傳引數,如:app://reaction/?uid=1

以上介紹了怎麼建立該本地協議及呼叫該本地協議的方法。但這裡還有個關鍵就是怎麼判斷使用者是否安裝了該app呢?原理如下:
在手機瀏覽器中用js程式碼請求該協議,如果在500ms內,如果有應用程式能解析這個協議,那麼就能開啟該應用;如果超過500ms就跳轉到app下載頁。

相關推薦

如何在HTML網頁調APP?

首先, 這個需要提前跟客戶端開發人員商定協議名稱,用URI Scheme作為HTML頁面與客戶端的通訊協議(這個很重要)。這裡的URI Scheme字首不是一般的http://,而是由客戶端開發者定義的,一般在寫程式的時候就會設定的了。然後剩下的部分就像普通的

android網頁調app並且傳參, 網頁點選高速下載跳轉app

我們有時候需要用到在自己的網站上點選高速下載,然後把引數傳到自己的app裡面進行下載。或者在別人的網站點選下載的時候調起我們的app作為下載器進行下載。那麼具體怎麼實現呢?我們分兩種情況: 一、自己的

HTML 網頁以超連結的方式呼叫iphone 手機的app

<1>. 呼叫iphone 手機地圖APP的簡單例項:<a href="http://maps.google.com/maps?q=查詢條件">提交查詢</a> 引數q:可以是一個某地的地址也可以是一個經緯度座標,也可以是一個查詢語句 

logo.ico在html網頁的實現

元素 美國 其他 對戰 cnblogs img 多人 load mar <!doctype html><html> <head> <meta charset="utf-8"/> <title>英雄聯盟_百度百科

gif圖再html網頁只播放一次

ges http hot 技術分享 log .cn png web web前端 ui給的gif圖放在網頁上只播放一次,怎麽也找不出來解決辦法是不是感覺自己的技術不行了,就在此時此刻不要懷疑自己,堂堂的web前端工程師不要慫。 聽我的首先打開Photoshop,然後把這個gi

HTML網頁引入Bootstrap前端框架

ble 需要 otto nta 在線 cal meta target initial Bootstrap百度百科介紹: Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASC

js h5頁面調App(IOS 和android)的實現方法

js h5頁面調起App(IOS 和android)的實現方法 第一次寫這個:我們的app是由原聲和h5組成的,當用戶使用瀏覽器開啟我們的頁面時我們會引導使用者使:開啟App 下載App 剛開始我是使用定時器來實現的,當用戶點選了開啟App經過一定時間之後沒有反應,則我們認為她調起App

怎樣在自己的網頁調用百度API

lan desc html list ava 基於 工業 overview ewma https://blog.csdn.net/u010251278/article/details/52877370 以下內容轉自上述網站,為了以後的學習方便,為此才特地將該網站內容轉到自

html網頁顯示並且播放一個視訊,+播放一個音訊

    //src 為視訊路徑      height 為視訊高度            width為視訊寬度 <embed src="intro.swf" height=

html網頁head頭部標籤的優化總結

寫網頁時,對於<head>標籤,每次都需要重新寫,有時候總是丟掉一些該有的標籤。 今日總結一下<head>標籤中的元素,做個記錄,會持續更新。 如果你還知道這裡面沒有的,評論區留個言,大家一起進步。 <head> <meta c

多次點選camera鍵或者電源鍵 調app

當時這個需求是,連續點選camera鍵啟動掃碼app。由於怕和其他app共享一個廣播,所以自己定義了一個廣播 ACTION_CAMERA_BUTTON.DC 掃碼app監聽ACTION_CAMERA_BUTTON.DC這個廣播。 修改檔案 frameworks/base/p

html頁面判斷本地app是否安裝並開啟

html中其實是無法判斷應用是否安裝,除非在webview中通過js bridge,這裡通過一種方式達到此目的。 1、編輯AndroidManifest.xml:     主要是增加第二個<intent-filter>,myapp用來標識schema,最好能保證

html 網頁的錨點(命名錨記)的使用介紹

點評:html中的錨點想必大家並不陌生吧,錨點是網頁製作中超級連結的一種,又叫命名錨記,下面以例項的方式為大家介紹下錨點的使用,不瞭解的朋友可不要錯過哦  以下資料整理自網路  1.錨點是網頁製作中超級連結的一種,又叫命名錨記。命名錨記像一個迅速定位器一樣是一種頁面內的超

HTML網頁設定彈出視窗的辦法

【1、最基本的彈出視窗程式碼】 其實程式碼非常簡單: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html') --> </SCRIPT> 因為這是一段javascrip

JAVA獲取html網頁的圖片src內容

有很多時候會有這樣的需求,獲取一個網頁中圖片的路徑,在Java中,可以使用Pattern類、Matcher類,配合正則表示式來獲取一個字串中需要的特定內容。 首先來看一下網頁中一個<img>

html網頁顯示瀏覽器標題欄小圖示

HTML網頁的瀏覽器標題欄顯示小圖示的方法 就像這種效果,方法其實很簡單,就是 在head頭部裡寫: <link rel='icon' href='pic.ico ' type='image

HTML網頁html body onload自動跳轉方法介紹及自動跳轉程式碼示例

HTML網頁中的html body onload自動跳轉方法介紹     html body onload就是“頁面載入完成後執行的動作”。一般寫在body裡面。例如,在html頁面中有一個大圖片,想要在圖片顯示出來後提示一個訊息框“圖片載入完成”,如果你直接寫在JS裡

獲取html網頁的body部分內容

1.匯入htmlparser.jar架包 2./**      * 獲取HTML頁面中BODY標籤的內容      * @param inputHTML      *      * @return void [返回型別說明]      * @throws [違例型別] [

HTML網頁插入ActiveX控制元件

ActiveX控制元件為XXXX.ocx <HTML> <HEAD> <TITLE>New Page</TITLE> </HEAD> <BODY> <OBJECT ID="ActiveXCont

HTML網頁插入VLC視訊或者windows media player視訊

VLC: <object type='application/x-vlc-plugin' id='vlc' events='True' width="720" height="540" plug