久久精品国产精品青草色艺_www.一区_国内精品免费久久久久妲己_免费的性爱视频

如何解決手機瀏覽器打開客戶端APP的問題??

###問題背景:###
如果用戶沒有安裝客戶端,第一次進入H5頁面,就直接下載客戶端或者到跳轉到APP Store;如果用戶手機安裝了客戶端,就直接打開響應的客戶端,不再繼續下載或者到下載頁面;

###問題難點:###
前端不能判斷用戶是否安裝了客戶端!
如果用戶有安裝客戶端,會出現打開客戶端成功后,瀏覽器那邊依舊在下載客戶端,非常損傷用戶體驗、浪費用戶的流量。(IOS會提示“在APP Store中打開鏈接嗎?”的Confirm提示框)

###目前解決方案:###

```javascript
var appInfo = {
iosUrl: "",//打開IOS客戶端鏈接
androidUrl: "",//打開ANdroid客戶端的鏈接
downloadUrl: ""//下載客戶端或者去App Store的鏈接
};

var t1 = new Date().getTime();

iframe2open();
jump2download();

//利用iframe打開客戶端
function iframe2open(){
var src = $.os.ios ? appInfo.iosUrl : appInfo.androidUrl,
iframe = document.createElement("iframe");

iframe.src = src;
iframe.style.display = &amp;#34;non<愛尬聊_創建詞條>e&amp;#34;;
document.body.appendChild(iframe);
}

//跳轉下載頁面
function jump2download(){
var _timer = null;

clearTimeout(_timer);
_timer = setTimeout(function(){
var t2 = new Date().getTime();

if (t2 - t1 .&lt; )

###求一臺給力的終極解決方案!
奉天承運老子詔 20小時前

對于一個完備的互聯網產品而言需要有app端與web端兩個不同前端,對于產品而言很多都希望能夠將wap頁上的用戶引向native app上這就要求前端工程師們為網頁提供各種入口去打開app,今天我們就聊一聊app的打開方式(有錯誤的地方還請高手指正)。常規打開對于app打開而言最常規的打開就是通過url scheme的方式去打開你的app,如下的myapp://myapp://openmyapp://type=1&amp;id=2sdeo223lwe這些拋出都是以url的方式進行拋出,app捕捉到這些拋出去做相應的處理,本文對app的處理不做詳細描述,app開發請自行谷歌百度。對于前端而言拋出的方式也有很多,而最理想的方式是通過iframe的src對其進行鏈拋出,來!說的在多都沒有代碼來的清晰,請看下面。首先我們需要有一個iframe://實際上就是新建一個iframe的生成器varcreateIframe=(function(){var iframe; return function(){ if(iframe){ return iframe; }else{ iframe = document.createElement(&amp;#39;iframe&amp;#39;); iframe.style.display = &amp;#39;none&amp;#39;; document.body.appendChild(iframe); return iframe; } }})()之后我們還需要一個url scheme://生成一個url scheme,假設我們約定的scheme是myApp://type=1&amp;id=iewo212j32這種形式的var baseScheme = &amp;#34;myApp://&amp;#34;var createScheme=function(options){ var urlScheme=baseScheme; for(var item in options){ urlScheme=urlScheme+item + &amp;#39;=&amp;#39; + encodeURIComponent(options[item]) + &amp;#34;&amp;&amp;#34;; } urlScheme = urlScheme.substring(0, urlScheme.length - 1); return encodeURIComponent(urlScheme);}這種scheme形式的其實不是最好的,根據我們踩過的坑,覺得約定為與http協議相近可能更好一些,具體的協議需要前端人員自己去和app端人員約定。ok萬事具備,iframe有了,urlScheme也有了,該去打開app了var openApp=function(){ var localUrl=createScheme(); var openIframe=createIframe(); if(isIos()){ //判斷是否是ios,具體的判斷函數自行百度 window.location.href = localUrl; var loadDateTime = Date.now(); setTimeout(function () { var timeOutDateTime = Date.now(); if (timeOutDateTime - loadDateTime &lt; 1000) { window.location.href = &amp;#34;你的下載頁面&amp;#34;; } }, 25); }else if(isAndroid()){ //判斷是否是android,具體的判斷函數自行百度 if (isChrome()) { //chrome瀏覽器用iframe打不開得直接去打開,算一個坑 window.location.href = localUrl; } else { //拋出你的scheme openIframe.src = localUrl; } setTimeout(function () { window.location.href = &amp;#34;你的下載頁面&amp;#34;; }, 500); }else{ //主要是給winphone的用戶準備的,實際都沒測過,現在winphone不好找啊 openIframe.src = localUrl; setTimeout(function () { window.location.href = &amp;#34;你的下載頁面&amp;#34;; }, 500); }}以上就是你要打開scheme的主要代碼了,好吧,實際上不只是打開app,還要實現未打開的時候跳到下載頁去。其中安卓實際上無論有沒有打開都會跳到下載頁去,而ios........好吧!按照網上的說法是瀏覽器失焦后會掛起腳本,呵呵,這是多老的ios版本的表現了,實際上現在的ios已經沒有這么做,有些版本會跟安卓的表現一樣,而有些則是直接跳轉根本不會去打開,還有打開的時候那個惡心的系統彈窗是什么鬼。好吧,實際上至此你會發現,ios9.0以上的有些打不開直接跳,有些打得開還會有允許彈窗,而微信則是無論如何都打不開,實際上微信會在他的瀏覽器里攔截掉所有未經其允許的scheme包括app store,那么接下來我們要解決這些問題。通用鏈接針對ios9及以上的打不開問題,實際上ios9提供了更好的解決方案————通用鏈接。什么是Universal Links(通用鏈接)?這是iOS9推出的一項功能,如果你的應用支持Universal Links(通用鏈接),那么就能夠方便的通過傳統的HTTP鏈接來啟動APP(如果iOS設備上已經安裝了你的app,不需要額外做任何判斷等),或者打開網頁(iOS設備上沒有安裝你的app)。或許可以更簡單點來說明,在iOS9之前,對于從各種從瀏覽器,Safari、UIWebView或者 WKWebView中喚醒APP的需求,我們通常只能使用scheme。以上來自網上關于通用鏈接的介紹,對于前端簡單點講就是你訪問一個http的url,如果這個url帶有你提交給開發平臺的配置文件中匹配規則的內容,ios系統會去嘗試打開你的app,如果打不開,系統就會在瀏覽器中轉向你要訪問的鏈接。很好的一個屬性,因為通過這個屬性在ios9上我們能夠繞過微信的攔截從而打開app。以下是ios開發人員要做的百度搜索結果第一條ios中實現通用鏈接:而我們要做的真的很簡單,實際上我們只需要拋出鏈接就好了(實際上博主只是來騙經驗的)。在此之前請準備好與主站不同的域名,比如主站http://www.xxxx.com,你們可以準備好http://open.xxxx.com的域名作為重定向用。好吧!實際上通用鏈接有一個很坑的屬性,必須是異域打開,而且如果你提交的是你主站的鏈接,你打開你的主站你會發現網站上方會掛著一個難看的灰條轉向appstore中你們的app,沒錯,就是ios系統干的這個事,具體的其他注意事項可以參考這篇文章IOS9通用鏈接(universal link)。那么接下來我們的代碼得做好更改//增加通用鏈接的生成,var baseScheme = &amp;#34;myApp://&amp;#34;, baseLink=&amp;#34;http://m.xxxx.com?&amp;#34;;var createScheme=function(options,isLink){ var urlScheme=isLink?baseLink:baseScheme; for(var item in options){ urlScheme=urlScheme+item + &amp;#39;=&amp;#39; + encodeURIComponent(options[item]) + &amp;#34;&amp;&amp;#34;; } urlScheme = urlScheme.substring(0, urlScheme.length - 1); return isLink?urlScheme:encodeURIComponent(urlScheme);}然后對拋出做var openApp=function(){ //生成你的scheme你也可以選擇外部傳入 var localUrl=createScheme({type:1,id:&amp;#34;sdsdewe2122&amp;#34;}); var openIframe=createIframe(); if(isIos()){ //判斷是否是ios,具體的判斷函數自行百度 if(isGreaterThan9()){ //判斷是否為ios9以上的版本,跟其他判斷一樣navigator.userAgent判斷,ios會有帶版本號 localUrl=createScheme({type:1,id:&amp;#34;sdsdewe2122&amp;#34;},true);//代碼還可以優化一下 location.href = localUrl;//實際上不少產品會選擇一開始將鏈接寫入到用戶需要點擊的a標簽里 return; } window.location.href = localUrl; var loadDateTime = Date.now(); setTimeout(function () { var timeOutDateTime = Date.now(); if (timeOutDateTime - loadDateTime &lt; 1000) { window.location.href = &amp;#34;你的下載頁面&amp;#34;; } }, 25); }else if(isAndroid()){ //判斷是否是android,具體的判斷函數自行百度 if (isChrome()) { //chrome瀏覽器用iframe打不開得直接去打開,算一個坑 window.location.href = localUrl; } else { //拋出你的scheme openIframe.src = localUrl; } setTimeout(function () { window.location.href = &amp;#34;你的下載頁面&amp;#34;; }, 500); }else{ //主要是給winphone的用戶準備的,實際都沒測過,現在winphone不好找啊 openIframe.src = localUrl; setTimeout(function () { window.location.href = &amp;#34;你的下載頁面&amp;#34;; }, 500); }}實際上就只需要更改這么點,最重要的是app端接入通用鏈接,注意拋出的鏈接不要跟主站同域即可,之后就是不斷的調試,自己去踩坑吧,記得綁定域名,這個對域名具有一定的依賴性。微信中打開至此只有微信是打不開的,實際上騰訊系的產品都是打不開的,包括qq瀏覽器。對于微信中有兩種方式:一種簡單的方式就是彈窗告訴用戶讓他去瀏覽器中打開——在技術之外的辦法還有一種方式就是應用寶是的如果是微信就去打開你的app對應的應用寶,應用寶會去檢測你的app是否存在有則去打開,但只是去打開。實際上騰訊的應用寶對于開發者在功能上做的比想象中的要強大,你在應用寶的微下載中配置申請你的applink(目前能申請不能用)與app store的鏈接,之后你只要在你的鏈接參數中帶上android_schema=&amp;#34;myApp://&amp;#34;就在應用寶中打開app中的特定功能,如果忽略應用寶的頁面跟自己scheme打開沒有太大區別,具體的操作可以查看應用寶的說明。簡而言之,騰訊的產品中都去借助應用寶這個平臺去執行你需要的操作。在此就不貼代碼了,只要判斷瀏覽器如果是微信或者是qq就去跳你的應用寶鏈接就行。以上答案來自我廠牟金濤老師的博文《wap頁中喚醒APP》更多網易技術、產品、運營經驗分享敬請關注網易社區知乎機構號:網易云 - 知乎


xinpai 20小時前

if (isAndroid) { //安卓設備:原理:判斷是否認識這個協議,認識則直接跳轉,不認識就在這里下載app /***打開app的協議,有安卓同事提供???***/ setTimeout(function () { window.location.href = &amp;#34;app下載地址&amp;#34;; document.body.removeChild(ifr); }, 2000) var ifr = document.createElement(&amp;#34;iframe&amp;#34;); ifr.setAttribute(&amp;#39;src&amp;#39;, &amp;#39;當前訪問的地址&amp;#39;); ifr.setAttribute(&amp;#39;style&amp;#39;, &amp;#39;display:none&amp;#39;); document.body.appendChild(ifr); }


明月松間行離弦的歌離弦的歌 20小時前

前端不能判斷用戶是否安裝了客戶端,但是可以給兩個按鈕讓用戶自己選,他是要安裝客戶端還是要下載app。


一筆一畫續寫前緣回憶凄美了誰等 20小時前

手機瀏覽器下怎么打開app應用 CSDN很多攻略


編輯 舉報 2023-07-17 14:13

0個評論

暫無評論...
驗證碼 換一張
相關內容