如何在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