定義: 微信開放標簽是微信公眾平檯面向網頁開發者提供的擴展標簽集合。通過使用微信開放標簽,網頁開發者可安全便捷地使用微信或系統的能力,為微信用戶提供更優質的網頁體驗
有哪些開放標簽?
<wx-open-launch-weapp> 打開小程序
<wx-open-launch-app> 打開app
接入要求
主體要求: 僅開放給已認證的服務號
系統要求:
微信版本要求為:7.0.12及以上。系統版本要求為:iOS 10.3及以上、Android 5.0及以上
接入方法
打開小程序使用步驟與微信js-SDK類似,需要綁定安全域名、引入JS文件等步驟
打開app需要前往微信開放平台的管理中心-公眾賬號或小程序詳情-介面信息-網頁跳轉移動應用-關聯設置中綁定所需要跳轉的App
示例:
配置最新JSSDK
wx.config({
// 其它配置不變, openTagList配置可使用的開放標簽,
openTagList: ['wx-open-launch-app, wx-open-launch-weapp']
})
頁面使用開放標簽
打開小程序
id="launch-btn"
// 小程序id
username="gh_xxxxxxxx"
// 小程序路徑
path="/a/b/c?d=1&e=2#fg"
>
.btn { padding: 12px }
打開小程序
打開app
id="launch-btn"
// 移動應用appid
appid="your-appid"
// 額外信息, 客戶端自行解析
extinfo="your-extinfo"
>
.btn { padding: 12px }
App內查看
回調
var btn = document.getElementById('launch-btn');
// 調起成功回調
btn.addEventListener('launch',function(e) {
console.log('success');
});
// 調起失敗回調
btn.addEventListener('error',function(e) {
console.log('fail', e.detail);
});
『貳』 H5寫的app在安卓終端機上如何自啟動
360衛士有開機自啟動管理,不過正常的自啟動沒什麼,系統為加快下次啟動速度,留有一部分進程,沒必要關閉,
『叄』 H5必知必會之與App交互
奇技指南
2018年11月26日發表的「360 AI音箱H5開發實踐」一文中,曾簡單提到「與Native交互」。本文將就此主題深入探討H5與App交互的幾種常見模式。
本文內容如下:
H5,在中國被專門用來指代開發內嵌於手機應用中的網頁的技術,外國好像並沒有這個說法。從技術上講,H5是HTML5即Hyper Text Markup Language(超文本標記語言)第5版的簡稱。而HTML只是開發網頁要用到的多種技術之一。除了HTML,還要用CSS設計界面,用JavaScript實現交互,甚至要用Node.js實現服務端邏輯。為什麼H5會被用來籠統地指代這些技術呢?我猜一是因為它簡單,二是移動端網頁開發技術又恰好需要這么一個概念。
移動端網頁運行在手機應用內嵌的瀏覽器引擎中,這個沒有UI的內核容器統稱WebView,即iPhone的UIWebView(iOS 2.0–12.0)、WKWebView(iOS 8.0+,macOS 10.10+)和Android的WebView。總之,WebView就是在手機應用中運行和展示網頁的界面和介面(神奇的是,英文Interface,既可以翻譯成「界面」也可以翻譯成「介面」)。
H5與原生應用的交互都是通過原生應用中的WebView實現的。通過這個環境,H5可以調用原生應用注入其中的原生對象的方法,原生應用也可以調用H5暴露在這個環境中的JavaScript對象的方法,從而實現指令與數據的傳輸。
比如,在Android應用中,WebView類有一個公有方法addJavascriptInterface,簽名為:
調用這個方法可以向WebView中以指定的名稱name注入指定的Java對象object。這樣,WebView中的JavaScript就可以通過name調用object的方法。比如:
在iOS或macOS中,需要通過創建WKWebView類的實例在應用中嵌入網頁,交互過程類似。
所謂基礎介面,就是首先要規定原生應用和JS分別在WebView里注入/暴露一個什麼對象:
並約定在這兩個對象上分別可以調用什麼方法:
顧名思義,NativeBridge.callNative是由JS調用向Native傳遞指令或數據的方法,而JSBridge.callJS則是由Native調用向JS傳遞指令或數據的方法。方法簽名中的參數含義如下:
基礎介面只有兩個對象和兩個方法,JS與App間的互操作則通過action和params來擴展和定義。
對於JS而言,雖然這里只定義了一個對象一個方法,但實踐中,可以把action對應方法的實現附加到JSBridge上,只要把callJS實現為一個分發方法即可,比如:
這樣,所有對callJS的調用,都會轉化成對JSBridge上相應action方法的調用,優點是只需一行代碼。
另一種實現方式是通過switch...case語句實現調用分發,比如:
這樣實現的優點是所有方法一目瞭然,當然同樣也是把所有相關介面都附加到同一個JSBridge對象上。
以上兩種實現模式各有利弊。
由JS發起的單向調用App的操作,主要涉及載入URL和切換到原生界面,可對應如下action:
loadUrl調用的參考協議如下:
這里NativeBridge是App的原生對象,其callNative方法被調用時,會收到一個對象(字典/映射)參數。根據這個參數的action屬性的值,App可知需要執行的操作是載入URL。於是再取得params屬性中的url,發送請求即可。
loadContent調用的參考協議如下:
同上,這里通過params向App傳遞了必要參數,App負責切換到相應的原生界面。
由App發起的單向調用JS的操作,主要涉及用戶點擊後退按鈕(<),可對應如下action:
can_back調用的參考協議如下:
此調用返回的值示例如下:
顧名思義,can_back用於App詢問JS:在返回上一級界面前,是否彈窗提示用戶?
返回值中的can如果是true,則直接返回,不提示;如果是false,則彈出一個確認框,請用戶確認。另一個值target是與App約定的返回目標,比如prev表示返回上一級,top表示返回頂級,等等。
雙向調用是JS先調用App,然後App在完成操作後再調用JS,雙向通常都需要傳遞數據。雙向調用主要涉及JS調用App原生組件和用戶點擊右上角按鈕,可對應如下action:
loadComponent的參考協議如下:
在這個例子中,涉及JS調用App顯示其實現的城市選擇組件:type: 'location',用戶選擇完城市之後,App再調用set_location,將用戶選擇的城市名稱傳給JS:
JS根據拿到的值更新界面,完成一次雙向調用。另一個例子是JS調用原生的日期選擇組件,與此類似。
為什麼叫displayNextButton?因為根據具體業務場景,可能存在如下三種情況:
displayNextButton協議的參考實現如下:
以上代碼示例表明,JS調用App,告訴App顯示「下一步」按鈕,但是要禁用變灰,因為enable: false。如果傳遞的是enable: true,那麼用戶就可以點擊「下一步」按鈕了。點擊之後,App再調用JS的save_form。最後,如果不想顯示按鈕,可以傳遞name: ''。
下面重點說一下用戶點擊「下一步」按鈕,App調用save_form的場景。此時也分兩種情況:
如果是JS通過App保存數據——可能因為App端實現了數據寫入必需的加密機制——那麼,JS可以在App調用save_form時將約定好的數據返回給App,由App去保存數據。
如果是JS直接保存數據,比如通過Ajax,那麼在保存完數據之後,則還需要調用前面所說的App暴露的loadUrl或loadComponent方法,以告知App切換界面。當然這種情況下會出現第三次調用,但仍然屬於雙向調用。
本文介紹了JS與App交互的幾種模式,而且只討論了JS端的實現。在開發實踐中,團隊各端總會面臨哪一端主導的問題。本文展示的參考實現就是H5端主導的一種實現形式。H5主導的特點是把主要業務邏輯都封裝到WebView中,App主要協同配合,而優點是業務邏輯的變更不會蔓延到App。畢竟相對於H5,App的安裝部署模式會造成多版本共存問題,需要盡可能控制新版本。假如由App端主導,將邏輯封裝在App端,勢必造成版本不受控,給整個項目或產品埋下隱患。
當然,事無絕對。具體情況還要具體分析。而且,哪方主導有時候也取決多方面因素。實踐中還是要因人、因時、因勢制宜。
『肆』 h5怎麼打開app
用xinstall工具,支持h5、網頁、簡訊、郵件等直接拉起app,非常好用的工具。歡迎你採納我的回答,給個大大的贊吧。有不明白的可以繼續追問或者網路搜索
『伍』 瀏覽器點擊鏈接怎麼喚醒app
為了實現這個功能可折騰了我好久,最後還是以失敗告終,但找到了比較好用的第三方工具,Xinstall都已經把功能實現了,只需要接入一下就可以使用了
h5跳轉/喚醒/拉起app,簡訊、郵件、瀏覽器拉起app用起來都是一氣呵成非常便捷。網路這方面的資料很多。
『陸』 H5的頁面中怎樣調用APP功能
H5的頁面中調用APP功能代碼鏈坦如下:
constiframe=document.createElement('iframe');
iframe.src='URLscheme';//URLscheme的方式跳轉
iframe.style.display='none';
document.body.appendChild(iframe);
這時候如果在慎喚清一切環境支持的情況下,寬前就會喚醒APP了。
『柒』 h5怎麼打開android app
如果你是自己開發的app嵌套的webview打畝羨開的h5,h5和app交互一下,通過自己的app打開其他的app很簡單,但是你要空耐升是從UC瀏覽器訪問個自己的h5,再點擊某個按鈕打開手機上的app是做不到的。斗老
『捌』 H5頁面與原生App(安卓,IOS)交互
在客戶端項目中,同一個app會開發成兩個版本,一個是安卓版本,一個IOS版本,公司必須有兩個開發團隊(一個安卓團隊,一個IOS團隊)來進行開發,這樣一來,開發成本非常之高。所以,往往在實際項目-中,會嵌套很多H5頁面,一個H5頁面同時兼容安卓和IOS兩個系統 ,這樣一來,大大減少了開發成本,前端開發頁面就必須和原生進行交互。
1. 頁面開發 —— 前端開發人員將所有的頁面按照移動webappp進行開發,做好不同屏幕的適配(寬度100%,視口為移動端視口 (快捷方式meta:vp tap),字體適配rem單位,設置html根標簽的font-size然後根據媒體查詢判斷設備屏幕大小進而設置html根標簽的不同fontsize,去除移動端高亮顯示;小圖標要善於使用字體圖標(常用的字體圖標庫有阿里巴巴矢量圖),改變input標簽的默認樣式可以採用隱藏input,然後通過字體圖標來控制前面的圖標,就可以做成自己想要的圖標效果)
2.前端頁面部署 —— 設置好入口文件(原生一進來就進入的頁面,命名為index.html),部署到對應的伺服器上,通過網址就能夠訪問到頁面,將網址給app客戶端開發人員,他們將app配置好環境後講頁面嵌套在app中。
3.進行數據對接:兩種對接方式(1).前端頁面自己通過ajax去後台拉數據,然後自己在頁面上使用再提交給後台。前提是原生需要將對應的設備號,加密方式,請求數據所需要的各種參數通過回調函數傳遞給H5頁面,H5頁面拿到這些數據後直接調後台的借口、獲取到數據。(2).前端頁面不用自己去後台拉取數據,而是通過回調函數,獲取到原生app拉取的數據,前端頁面將這些數據處理後又通過回調函數交給app,再又app發送給後台。兩種調用的優劣比較:如果H5頁面及數據不是很多,使用第二種方式比較合理,不用H5頁面請求數據(不用封裝請求,不用加密數據),不使用框架,大大減少了頁面的大小,提高性能及用戶體驗。如果涉及到的前端頁面非常多,數據交互比較復雜的話,就必須使用第一種對接方式了,app只需要將設備號,加密規則,參數傳遞給H5,H5根據頁面需求自己向後台拉去和請求數據,直接交互,不再通過app進行轉接,減小復雜程度。
『玖』 iOS H5打開App(通用鏈接)
入秋了,路上會遇到用小販用小貨車拉著賣芒果,和去年一樣,我會停下急匆匆的腳步,買幾個。一則自己愛吃芒果不過敏,二則品嘗下是否和去年一樣熟悉的味道。
在微信裡面點擊的分享的商品:
瀏覽器如何知道手機是否安裝了App呢,通過設置延時。
白名單如下:在這個 plist 文件中找到白名單很簡單,因為微信已經達到了49個的上限,一個很扎眼的 「(49 items)」 的 「Array」 項 LSApplicationQueriesSchemes 就是我們要找的白名單了。我們可以看到諸如騰訊新聞 (qqnews), 騰訊視頻 (tenvideo2) 都是在白名單內的。
使用它頒發給你的應用地址,向這個地址跳轉,然後一切就交給微信了,直接無視微信什麼的,直接帶你飛到app內。具體可看騰訊應用寶Applink接入 文檔 。舉個例子,網易新聞。從網易新聞分享一條鏈接到微信,在微信裡面點開鏈接。
優點:
缺點:
只支持iOS9及以上系統;當使用Universal Link打開APP之後,狀態欄右上角會出現鏈接地址,點擊它會取消Universal Link,需引導用戶重新使用Safari再次打開該鏈接,彈出Safari內置APP廣告條,再點擊打開重新開啟Universal Link。
說明: appID = teamId.yourapp's bundle identifier
paths = APP支持的路徑列表,只有這些指定的路徑的鏈接,才能被APP所處理,大小寫敏感。舉個例子,如果你的網站是 oap.aaa.com ,你的path寫的是"/info/*",那麼當用戶點擊 www.aaa.com/info/ <path>?<params>=<value>,就可以喚醒APP了,相反 www.aaa.com/other 就不會。此外Apple為了方便開發者,提供了一個 網址 來驗證我們編寫的這個apple-app-site-association是否合法有效,這個網址經過測試後有的有效果有的沒有效果。下圖是輸入oia.hu.com之後的效果。
至此APP已經開啟Universal Links,可以通過鏈接喚醒APP,並跳轉至指定頁面了。流程如下:
註:用於跳轉打開app的域名需要支持https,如果是一級域名頁面有個按鈕,點擊按鈕跳轉二級域名來打開app,那麼二級域名需要支持https。這里DEMO的二級域名不支持https,所以採用的方案是二級域名跳轉到一級域名來打開APP。
解決方案:在Safari中打開該頁面,將網頁拉倒最頂部,會出現一個懸浮框,點擊懸浮框中的打開按鈕,又跳回到app中打開指定頁面,此時再回到微信瀏覽器中點擊 "打開App"按鈕,又能正常跳轉到app了。
Universal Links 功能的接入其實相當於給某些 URL 添加了一種新的打開方式,但是舊的通過瀏覽器打開 URL 的方式仍然可用,當點擊右上角跳轉箭頭時,相當於又設置這些特定 URL 的默認打開方式為瀏覽器而非 web,因此一鍵跳轉功能此時會失效。反之通過點擊頂部 "打開" 按鈕,相當於又將這些特定 URL 的默認打開方式修改為 app ,一鍵跳轉功能恢復正常。
在Safari中打開頁面剛進入時,橫條是隱藏的,一定要將頁面拉到最頂部時才能顯示。