成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > html5啟動原生APP總結

html5啟動原生APP總結

熱門標簽:高德地圖標注地點糾錯 平?jīng)龅貓D標注位置怎么弄 只辦理400電話 機器人外呼系統(tǒng)存在哪些能力 南昌仁和怎么申請開通400電話 如何獲取地圖標注客戶 電話機器人電銷系統(tǒng)掙話費 電話機器人黑斑馬免費 拓展地圖標注

許久沒有寫博客了,最近有個H5啟動APP原生頁面的需求,中間遇上一些坑,看了些網(wǎng)上的實現(xiàn)方案,特意來總結下

一、需要判斷客戶端的平臺以及是否在微信瀏覽器中訪問

1、客戶端判斷

在啟動APP時,Android和IOS系統(tǒng)處理的方式是不一樣的,Android這邊由于開放,可以在瀏覽器中通過<a>標簽以及meta標簽的方式,讓瀏覽器app獲取手機打開應用的權限進而啟動APP。

而在IOS這邊,IOS9以后的系統(tǒng),則可以在APP開發(fā)過程中加入配置和邏輯代碼編寫,系統(tǒng)在瀏覽器即將訪問到某個域名前就把這個域名對應的APP打開,這個有點閃,封閉還是有封閉的好處。

所以首先要在客戶端判斷,是Android系統(tǒng)還是IOS系統(tǒng),判斷代碼如下

function isInIos(){
    var userAgentInfo = navigator.userAgent ,
        Agents = ["iPhone" , "iPad", "iPod"];
    for(var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
          return true;
        }
    }
    return false;
}        

2、是否在微信內(nèi)置瀏覽器中

無論是在哪個平臺的客戶端Android/IOS,在微信的平臺上訪問都有一個問題,那就是無法啟動客戶端,這是微信為了安全性考慮的限制,android這邊屏蔽schema協(xié)議,除非公司是微信的伙伴加入了白名單才能

使用,IOS系統(tǒng)可以去訪問app對應appstore的下載頁,但是微信經(jīng)常屏蔽appstore的這個網(wǎng)址,進而訪問不到。比較方便的做法就是在微信瀏覽器中,無論是IOS還是android都去應用寶的下載(IOS 這邊最后會到

appstore中)頁面打開。我這邊的需求是提示用戶點擊“...”用默認瀏覽器打開。

判斷是否是在微信中,代碼如下:

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

二、原理

首先無論是andorid還是IOS端,在瀏覽器中通過JS都是無法判斷該手機是否裝有某APP的,即使這個瀏覽器有權限讀取手機應用列表,也沒有一個固定的對外API讓咱們進行查詢。而H5啟動APP本質上是通過

URL scheme打開APP,一個APP可以設置一個或多個打開自己的URL scheme,瀏覽器去訪問某一個APP的URL scheme,然后若系統(tǒng)安裝有這個APP,則會請求權限去打開這個APP。其實也算是瀏覽器app

打開另一個app,iOS就可以使用 UIApplication 的 canOpenUrl 方法來檢測URL scheme 是否能打開對應的APP,而android也是類似的方式。當然如果JS跳轉URL scheme沒有反應,也意味著這個手機沒有

裝這個app。

三、android平臺

首先編輯AndroidManifest.xml,主要是增加第二個<intent-filter>

<activity android:name=".activity.LoadingActivity"
      android:label="${APP_NAME}"
      android:screenOrientation="portrait"
      android:theme="@style/FirstActivityTheme">
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <intent-filter>
          <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:host="android"
                android:scheme="wushang" />
      </intent-filter>
</activity>

比如此處wushang就是scheme,這個最好是app的唯一標識符,要不然在H5喚醒時,會出現(xiàn)一個選擇框,選擇啟動哪一個APP。而host表示啟動該頁面,其實這個更應該用com.android.sky這樣的包名來替代更好。

這樣的情況完整的URL就是wushang://android?data=sky,后面是參數(shù)傳遞。在Activity中可以用如下代碼獲取參數(shù)

public void onCreate(Bundle savedInstanceState) {             
     Uri uridata = this.getIntent().getData();             
     String mydata = uridata.getQueryParameter("data");            
}

之后在進行字符串截取還是什么鬼的都隨意啦。

接下來來談談前端代碼,這里有兩種情況

1、頁面在刷新進入時,請求權限喚起APP

這個比較簡單,就只用在頁面的頂部head中加入meta標簽即可

<meta http-equiv="refresh" content="0;url=wushang://android?data=sky">

這個標注當頁面刷新即去訪問這個鏈接,進而啟動APP。但是存在一個問題,如果是蘋果系統(tǒng)的Safari瀏覽器的話,訪問有這個meta的頭,會給出錯誤提示,所以這個頭部可以在后端進行頁面渲染時通過客戶端的

總類在加上去。

2、通過點擊事件喚起APP

最簡單的辦法當然是直接使用a標簽,如下

<a href="wushang://android">open Android app</a>

但是在實際使用時,是需要對客戶端的平臺類型還有是否在微信內(nèi)置瀏覽器中進行判斷的,所以這樣的做法肯定是不行的。

接下來談談在開發(fā)過程中,遇到的一個問題,記錄下。因為這邊移動端使用的工具庫庫是zepto,采用的點擊事件是tap,但是在用tap進行處理是經(jīng)常要點很多下,才能喚起APP

<script type="text/javascript">
  $('#go').tap(function(){
      window.location.href = "wushang://android";
  });
</script>

具體原因不知,可能是tap事件采用的是輕點觸碰。然后摸索了下,才用click事件,或者直接在a標簽上標注處理函數(shù)就沒有這問題

<a id="go" >
    open Android app
</a>
<a href="javascript:startApp()">
   open
</a>
<script src="../res/lib/zepto.min.js"></script>
<script src="../res/lib/public.js"></script>
<script>
    $('#go').click(function () {
       if(publicFun.isIos()){
          alert('it is IOS')
       }else{
          window.location.href = "wushang://android";
       }
    });

    function startApp(){
       if(publicFun.isIos()){
          alert('it is IOS')
       }else{
          window.location.href = "wushang://android";
       }
    }
</script>

所以決定以后遇到這類問題,就用這兩種方式了。下面是實際的處理函數(shù)

 window.startApp = function(){     //啟動APP
     if(publicFun.isInWx()){     //微信中
        alert("請在瀏覽器中打開");
     }else{      //非微信中
        if(publicFun.isIos()){    //IOS系統(tǒng),直接去itunes中,既可以下載也可以打開
            window.location.href = "https://itunes.apple.com/cn/app/[name]/id[id]";
        }else{      //android系統(tǒng),通過定時器的方式,判斷是否安裝有APP
            var 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的時間就是出發(fā)APP啟動的時間,若APP啟動了,再次返回頁面時t2這行代碼執(zhí)行,hasApp即為true。反之若APP沒有啟動即為false
              var t2 = Date.now();
              hasApp = !(!t1 || t2 - t1 < t + 150);
            } , t);
        }
     }
  } 

其實有個非常簡單的辦法,就是直接跳轉應用寶。無論是在android還是IOS,以及微信非微信。應用寶的下載頁面都有下載和打開兩個功能(如果是在IOS平臺,它是通過連接app store的方式)

 四、IOS平臺

針對ios9及以上的打不開問題,實際上ios9提供了更好的解決方案————通用鏈接。

這是iOS9推出的一項功能,如果你的應用支持Universal Links(通用鏈接),那么就能夠方便的通過傳統(tǒng)的HTTP鏈接來啟動APP(如果iOS設備上已經(jīng)安裝了你的app,不需要額外做任何判斷等),或者打開網(wǎng)頁(iOS設備上沒有安裝你的app)。或許可以更簡單點來說明,在iOS9之前,對于從各種從瀏覽器,Safari、UIWebView或者 WKWebView中喚醒APP的需求,我們通常只能使用scheme。

以上來自網(wǎng)上關于通用鏈接的介紹,對于前端簡單點講就是你訪問一個http的url,如果這個url帶有你提交給開發(fā)平臺的配置文件中匹配規(guī)則的內(nèi)容,ios系統(tǒng)會去嘗試打開你的app,如果打不開,系統(tǒng)就會在瀏覽器中轉向你要訪問的鏈接。很好的一個屬性,因為通過這個屬性在ios9上我們能夠繞過微信的攔截從而打開app。

所以上面的點擊事件,僅僅是去訪問app store,因為若app已安裝,在瀏覽器訪問時,就已經(jīng)去到APP中了。

這些都是IOS配置上的東西,就不多寫了。至于傳參,以及頁面定向,其實也就是相當于在UIWebView中獲取當前連接的URL,然后進行字符串拆分以及校驗,即可判斷去哪個頁,以及獲取參數(shù)值。

到此這篇關于html5啟動原生APP總結的文章就介紹到這了,更多相關html5啟動原生APP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:青島 漯河 池州 新疆 西藏 遼源 永州 棗莊

巨人網(wǎng)絡通訊聲明:本文標題《html5啟動原生APP總結》,本文關鍵詞  html5,啟動,原生,APP,總結,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《html5啟動原生APP總結》相關的同類信息!
  • 本頁收集關于html5啟動原生APP總結的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    加勒比海盗1在线观看免费国语版| 亚洲风情在线资源| 熟女视频一区二区三区| 日韩av在线中文字幕| 欧洲精品亚洲精品| 久久国产精品亚洲va麻豆| 亚洲精品www.| 国产91精品最新在线播放| 免费不卡的av| 久久久噜噜噜久久狠狠50岁| 夜夜爽妓女8888视频免费观看| 欧美主播一区二区三区美女| 国产中文在线播放| 国产高清自产拍av在线| 国产精品二区一区二区aⅴ污介绍| 国产中文字幕一区| 色婷婷精品国产一区二区三区| 被下部羞羞漫画| 欧美大陆一区二区| 亚洲最大在线视频| 亚洲小视频在线播放| 欧美成人午夜| 无码专区aaaaaa免费视频| 欧美一区二区女人| 欧美激情第一区| 久久成人一区二区| 精产国品一区二区三区| 国产黄色一级大片| 性高潮久久久久久久久| 91视频最新| 国产成+人+日韩+欧美+亚洲| 欧美美女一区二区在线观看| 福利片一区二区三区| 欧美性感美女一区二区| 一区二区三区在线播放| 成人黄色国产精品网站大全在线免费观看| 黄av在线免费观看| 亚洲激情五月婷婷| 精品国产乱码久久久久夜深人妻| 精品亚洲一区二区三区四区五区| 成人18精品视频| 91网页版在线| 一区二区免费看| 亚洲国产成人私人影院tom| 影音先锋男人在线资源| 亚洲承认在线| 欧美成人精品福利网站| www在线免费观看视频| 久草网站在线观看| 亚洲激情在线观看| 国产短剧电视剧免费观看| 8848成人影院| 久久久精品日韩欧美| 亚洲国产精品一区在线观看不卡| 久久久av免费| 夜夜嗨网站十八久久| 久久―日本道色综合久久| 色婷婷.com| 久久精品国产亚洲精品2020| 亚洲一区二区三区四区在线| 国产精品视频一区二区三区| 欧美+亚洲+精品+三区| 久久资源在线| 欧美剧在线免费观看网站| 香蕉视频国产在线观看| 91精品国产成人| 亚洲成人在线观看视频| 92国产精品久久久久首页| 久久综合丝袜日本网| 国产精品中文字幕制服诱惑| 欧美精品九九久久| 成人无码av片在线观看| 久久久久久77777| 国产精品456露脸| 亚洲综合最新在线| 天天操夜夜操国产精品| 色丁香婷婷综合久久| 在线看片中文字幕| 欧美一区二区三区……| 国产日本欧美视频| 婷婷一区二区三区| 欧美性xxxxxbbbbbb精品| 亚洲欧美精品在线观看| 欧美xxxbbb| youjizz.com在线观看| 日韩精品一区二区av| 国产精品无码自拍| 国产一区二区影视| 中文字幕第一页在线播放| 亚洲欧洲中文| 精品露脸国产偷人在视频| 国产日韩av网站| 欧美aaaxxxx做受视频| av一区二区三区免费观看| 欧美精品久久99久久在免费线| 天天做天天干天天操| 中日韩免费毛片| 久久精品国产久精国产一老狼| 亚洲成人久久电影| 国产精品自拍在线观看| 99reav| 黄色网页在线看| 亚洲最大的免费视频网站| 性欧美精品xxxx| 午夜两性免费视频| jizzjizz日本护士免费| 大肉大捧一进一出好爽动态图| 久久影院午夜片一区| 极品av在线| 无码久久精品国产亚洲av影片| 久久人人视频| 黑人巨大精品欧美一区二区三区| 欧美久久久久久久久久久久久| 手机看片福利日韩| 亚洲激情国产精品| 色哟哟国产精品| 93久久精品日日躁夜夜躁欧美| 一区二区三区 在线观看视频| 亚洲国产精品一区制服丝袜| 四虎影视2018在线播放alocalhost| 欧美精品在线观看播放| av不卡在线免费观看| 成人妖精视频yjsp地址| 国产91精品最新在线播放| 日韩一区二区在线观看| 国产女同91疯狂高潮互磨| 欧美日韩一区二区在线免费观看| 日本韩国欧美国产| 三级全黄做爰视频| 国产一区二区三区成人欧美日韩在线观看| 国产成人a人亚洲精品无码| 日韩亚洲视频在线| 午夜一区二区三区在线观看| 成人女保姆的销魂服务| 成人写真视频福利网| 一区二区三区在线观看av| 欧美日韩大陆一区二区| 国产精品国产三级国产在线观看| 久久影院在线观看| 午夜精产品一区二区在线观看的| 亚洲人成网站影音先锋播放| 欧美丝袜美女中出在线| 人妻av无码一区二区三区| 国产精品私拍pans大尺度在线| eeuss影院在线观看第一页| 欧洲grand老妇人| 欧美体内she精高潮| 久久99精品国产一区二区三区| 国产一区二区三区四区五区美女| 亚洲欧洲精品一区| 奇米亚洲午夜久久精品| 日韩无码精品一区二区| 中文字幕一二三区| 国产精品一区而去| 国产一区二区免费视频| 亚洲一级免费毛片| 在线免费观看日韩av| 精品视频9999| 国产91精品看黄网站在线观看| 激情偷乱视频一区二区三区| 久久国产亚洲| 国产综合色激情| 欧美激情第一页在线观看| 国产一级黄色大片| 亚洲久久一区| 97碰在线观看| 老头吃奶性行交视频| 美女免费视频网站| 啪啪小视频网站| dy888午夜| 欧美一区二区三区爱爱| 91在线观看免费高清完整版在线观看| 国产中文精品久高清在线不| 国产欧美日韩最新| 在线视频播放大全| 永久免费精品影视网站| 天天干狠狠干| 国产在线88av| 今天免费高清在线观看国语| 色网站在线免费观看| 中文字幕第一页在线| 久久五月天小说| 亚洲精品国产成人影院| 黄页在线免费看| 久久精品视频5| 欧美主播一区二区三区美女 久久精品人| av超碰在线观看| 中文视频一区| 国产精品一区二区人人爽| 亚洲综合影院| 91精品久久久久久蜜桃| 国产熟妇久久777777| 激情五月综合网| 国模私拍视频在线播放| 色婷婷久久综合| 精品视频一区二区三区在线观看| 欧美区日韩区| h网址在线观看| 91色在线视频| 蜜桃伊人久久| 韩国日本一区| 久久xxxx| 免费h在线看| 亚洲精品99999| 日本a级片电影一区二区| 成人在线视频国产| 国产aaaaaaaaa| 国产情侣av自拍| 国产视频在线观看一区二区三区| 大胆欧美熟妇xx| 亚洲三级网址| 一区二区三区四区激情| 日韩在线视频免费播放| 成人精品视频.| 久久久久久色| 成人高清伦理免费影院在线观看| 99re热视频| 午夜不卡久久精品无码免费| 国产精品久线观看视频| 日本在线不卡视频一二三区| www.国产在线观看| 欧美不卡激情三级在线观看| 日韩在线中文字幕| 性欧美videos高清hd4k| 久久.com| xxxx黄色| 成人91在线观看| 污污视频网站在线| 无码免费一区二区三区免费播放| 久久免费视频精品| 精品视频1区2区| 欧美重口另类videos人妖| 老司机免费视频一区二区| 欧美日韩一区二区三| 成人情视频高清免费观看电影| 欧美岛国在线观看| 一区二区精品在线观看| 精品偷拍一区二区三区在线看| 欧美bbbbb性bbbbb视频| 日本最新在线视频| 国产精品久久久久久久久久辛辛| chinesemodel无套啪啪| 成人毛片在线观看| 亚洲美女精品久久| 男女免费视频网站| 欧美激情理论| 亚洲卡一卡二卡三| 精品欧美一区二区三区精品久久| 在线中文字幕视频| 色综合久久88色综合天天免费| 波多野结衣影片| 五月婷婷综合在线观看| 午夜视频一区二区在线观看| dy888亚洲精品一区二区三区| 亚洲视频精品在线观看| 欧美人善zozσ性伦交| 国产97色在线 | 日韩| 亚洲日本va中文字幕久久| 国产福利三区| 免费国产黄色网址| 欧美激情一区二区三区全黄| 99re只有精品| 国产老女人精品毛片久久| 九九热视频这里只有精品| 久久精品欧美一区二区三区麻豆| 日韩高清av在线| 国产欧美精品aaaaaa片| 黄网在线播放| 天堂在线亚洲| 一级特黄录像免费看| 精品少妇一区二区30p| 韩国成人动漫在线观看| 麻豆av在线| 日韩欧美在线中文字幕| 国产尤物视频在线| 日韩视频在线一区| 日韩色淫视频| 成年网站在线观看| 精品成人在线视频| 影音先锋久久资源网| 九九热爱视频精品视频| 丰满少妇一区二区三区专区| 婷婷激情图片久久| 国产精品视频一区视频二区| 亚洲午夜精品一区| 欧美精品一区二区三区涩爱蜜| 欧美精品v日韩精品v国产精品| 超碰成人在线观看| 黄色成人av网| 欧美日产国产成人免费图片| 亚洲熟妇无码一区二区三区| 国产成人av网站| 天天摸日日摸狠狠添| 欧美午夜精品理论片a级大开眼界| 国产中文字幕亚洲| 欧美成人在线网站| 一级视频在线播放| 久久久久久久免费| 四虎最新地址发布| 亚洲女爱视频在线| 欧美1区二区三区公司| 日韩国产精品大片| 亚洲成av人片在线| 99久久一区三区四区免费| 亚洲大片一区二区三区| 亚洲成人av福利| 成人啊v在线| 一区三区自拍| 国产盗摄视频一区二区三区| 在线免费观看黄色网址| 狠狠97人人婷婷五月| 91精品国产欧美一区二区18| 国产男女无套在线播放| 日韩三级高清在线| 大乳在线免费观看| 精品在线视频免费观看| 特黄特黄一级片| 亚洲福利久久| 无码人妻精品中文字幕| 亚洲成人av网址| 国产淫片av片久久久久久| 国产精品老女人精品视频| 日本一卡二卡在线播放| 91av视频| 日韩电影在线观看中文字幕| 92久久精品| 国产精品一区久久| 亚洲色图一二三区|