H5混合開發app經常使用代碼

一、Android與H5互調可讓咱們的實現混合開發,至於混合開發就是在一個App中內嵌一個輕量級的瀏覽器(高性能webkit內核瀏覽器),一部分原生的功能改成Html 5來開發。而後這個瀏覽器又封裝了一個WebView控件((網絡視圖))來加載顯示網頁,展示html頁面。須要注意的是,當H5內嵌在app裏面的時候,app那邊有很高的權限來控制H5頁面上的操做,好比app能夠直接調用html裏面的函數方法,能夠禁止本地存儲localStorage和cookie!!從而使H5頁面使H5上用的相應功能失效!!!html

二、H5跟app交互實例:android

咱們這邊使用app在內嵌H5頁面的瀏覽器內核上帶一個標識,這邊是加pop=1,若是瀏覽器中帶有pop=1,那麼就是嵌在app端的頁面,而後暴露方法app_share()給app,裏面傳參數,可把一些常見的交互規範成固定文檔,例如ios

1.登陸:app_loginweb

二、分享:app_sharejson

*分享文案內容的傳值須轉換成json格式瀏覽器

三、客服:app_service微信

四、頭部返回:app_go_backcookie

五、產品詳情(包括後續購買):app_detail網絡

*詳情須傳產品編號app

六、返回首頁:app_go_home

具體事例以下:

var sharedata={
    event_key: "{$act_data.event_key}",
    type:'0',
    number:'0'
}

var u = navigator.userAgent; //獲取內嵌瀏覽器信息 
var isAndroid = u.indexOf('Android') > -1 ||u.indexOf('Adr') > -1; //android終端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端

if (u.indexOf("pop=1") < 0) {
    
}else{
   var isAndroid = u.indexOf('Android') > -1 ||u.indexOf('Adr') > -1; //android終端
   var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
   if (isAndroid) {
      window.android.app_share(JSON.stringify(sharedata));
   } else {
     window.app_share(JSON.stringify(sharedata));

   }
}

 

在web移動端中頭部須要顯示,而嵌在app裏面的時候,須要隱藏,那麼一開始就讓頭部隱藏,而後判斷如如果移動端就讓其顯示,優先考慮app端,在app端的H5頁面加載速度比較慢,否則會出現閃現

三、在H5頁面點擊某個按鈕喚起app,要是下載app則打開app,沒有的話跳轉提示下載!!!

<a id=「openApp」>前往app查看</a>

// 手機有沒有下載app判斷begin
var ua = navigator.userAgent.toLowerCase();
var t;
var config = {
    /*scheme:必須*/
    scheme_IOS: 'com.xmgztbw.bgbapp://',
    scheme_Adr: 'bgbapp://myapp/bgzx?param=1',
    download_url: 'http://a.app.qq.com/o/simple.jsp?pkgname=com.gongzhong',
    timeout: 3000
};

function openclient() {
    var startTime = Date.now();
                    
    if(ua.indexOf('os') > 0){
        window.location = config.scheme_IOS;
    }else{
        var ifr = document.createElement('iframe');    
        ifr.src = ifr.src = config.scheme_Adr;
        ifr.style.display = 'none';
        document.body.appendChild(ifr);
    }
    var t = setTimeout(function() {
        var endTime = Date.now();

        if(!startTime || endTime - startTime < config.timeout + 800) {
            window.location.href = config.download_url;
        } else {

        }
    }, config.timeout);

    window.onblur = function() {
        clearTimeout(t);
    }
}
window.addEventListener("DOMContentLoaded", function() {
    document.getElementById("openApp").addEventListener('click', openclient, false);

}, false);
// 手機有沒有下載app判斷end

 四、不一樣客戶端判斷,賦予不一樣平臺號

// 獲取平臺號
Vue.prototype.getPlatform = function (){
    let u = navigator.userAgent;
    if(u.indexOf("pop=1") < 0){
        let userAgentInfo = navigator.userAgent.toLowerCase();
        if(userAgentInfo.indexOf('micromessenger') != -1) {
            return 4;  //微信端
        }else {
            return 3;  //瀏覽器端
        }
    }else{
        var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端
        var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
        if (isAndroid) {
            return 2;
        } else {
            return 1;
        }
    }

}

五、在瀏覽器中打開H5頁面,點擊某個按鈕跳轉微信

$(".btn").on("click",function(){
      window.location.href="weixin://"
})

六、H5頁面要在第三方app裏面打開微信時,H5頁面須要跟app交互,不能直接跳連接!

應用場景

點擊我要參與按鈕時,若是改H5頁面在微信打開,直接跳活動首頁連接,若是在app裏面就打開app,在瀏覽器也是打開微信

var u = navigator.userAgent;
$(".wycy-btn").click(function(){ if (u.indexOf("pop=1") < 0) { var ua = navigator.userAgent.toLowerCase();//獲取判斷用的對象 if (ua.match(/MicroMessenger/i) == "micromessenger") { //在微信中打開 window.location.href="{:U('index')}"; }else{ //在瀏覽器中打開微信; window.location.href="weixin://"; } }else{ //在app裏面打開微信 var isAndroid = u.indexOf('Android') > -1 ||u.indexOf('Adr') > -1; //android終端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端 if (isAndroid) { window.android.app_pasteboard();//打開微信交互 } else { window.app_pasteboard(); } } })

 

 常碰見問題

常見問題一

爲了用戶能獲得快速的問題處理解決,你第一時間收集到用戶的如下信息

一、用戶使用的APP版本、
二、使用的手機類型,(如蘋果手機或是安卓手機 、蘋果6或是7 魅族手機或是華爲等信息)
三、蘋果手機IOS系統版本
四、用戶登陸的手機帳號、
五、用戶使用哪一個功能模塊出現問題、報錯信息是什麼 (叫用戶以截圖憑據)

問題一:app支付成功後跳轉成功頁面,出現紅包金額錯誤,

常見問題二

ios中的圖片會分批加載,須要用到的時候才加載,不須要的時候,就暫時不會加載,因此當點擊的時候切換圖片的顯示隱藏,第一次出現的圖片會閃一下,解決方法,用一個div將須要用到的圖片包裹起來,提早加載圖片,而後設置該div的樣式爲

opacity=0;

相關文章
相關標籤/搜索