博客 / 詳情

返回

公交年檢_mui項目小結

技術總結

一、實名認證頁面(RealNameAuthentication.html)

1.相機拍照蒙層,前端不易實現
解決:用原生代碼來解決的。進入拍攝界面,js所調用函數如下(該函數包含網絡請求)

function idCardPut(ruid, okCallback, failCallback, errorCallback) {
    var success = function(result) {
        var response = JSON.parse(result);
        if (response.meta.code === 0 && okCallback) {
            okCallback(response.meta, response.data)
        } else if (failCallback) {
            failCallback(response.meta, response.data)
        }
    }

    var failed = function(msg) {
        if (errorCallback)
            errorCallback(msg);
    }
    var callbackId = plus.bridge.callbackId(success, failed);
    plus.bridge.exec('ApiClient', 'idCardPut', [callbackId, '/user/auth/idcard/upload', '', ruid]);
}

二、人保購險頁面(PersonalInsurancePay.html)

1.通過支付鏈接所打開的頁面,若未支付,無法返回到人保購險頁面
解決:打開帶原生導航欄的頁面(點擊導航欄的按鈕可返回)

    payWebview = mui.openWindow({
        id: 'pay_page',
        url: 'LoadingPage.html',
        styles: {
            titleNView: {
                style: 'transparent',
                backgroundColor: '#FFFFFF',
                titleText: '保單支付',
                titleColor: '#000000',
                autoBackButton: true,
            }
        }
    });

2.支付接口回調的響應時間太長(大概一分鐘),採用此方法用户體驗很差
解決:採用輪詢的方式,設置一個定時器,支付鏈接頁面加載完成後調用該定時器,每隔2s查詢一次保單的支付狀態(注:頁面關閉時進行完最後一次支付狀態的查詢再關閉定時器)

// 設置一個定時器,點擊支付按鈕後,輪詢支付情況
function pollingCheckPay() {
    setTimeout(function() {
     getInfoOfPolicy(gGetInfor.policy_number,checkPayCallback);
    }, 2000);
}

三、mui的一些坑

1.提示框的效果不行,應該是代碼最後沒加上’div’

 //可能你是這樣寫的
 mui.alert(msg, "提示", ['確定'], function() {})

 //加上'div'才有樣式,該參數是指是否使用h5繪製的對話框
 mui.alert(msg, "提示", ['確定'], function() {},'div')

2.mui的確認框confirm使用

mui.confirm(getConfirmMsg(val), "請確認身份信息", ["信息有誤", '確認'], function(e) {
                                if (e.index === 0) {
                                    take_photo(ruid);
                                } else if (e.index === 1) {
                                    mui.showLoading("正在加載..", "div");
                                    infoConfirm("id_card", ruid, buid);
                                }
                            }, "div")

3.mui預加載的目標頁面,不可用mui.openWindow傳參

mui.init({
    preloadPages: [{
        id: 'PersonalInfo',
        url: 'PersonalInfo.html',
    }]
});
mui.openWindow({
    id: 'PersonalInfo',
    url: 'PersonalInfo.html',
    extras:{
        name:'小明'
    }
});

4.適配

由於要適配至安卓4.4(Android 4.4是谷歌於2013年11月1日發佈的手機操作系統。),且6.0之前版本的webview不支持ES6,故使用es5純原生開發。

項目收穫

1.即時和開發團隊成員溝通很重要,溝通的效率會決定自己對項目的理解,以及開發的效率,好的溝通可以加快開發的速度且可減少代碼更改量;
2.項目開發前的準備工作很重要,一開始未梳理清楚整個頁面流程,導致一開始效率較低,且開發乏力,應一開始就提醒大家開個會,理清楚頁面間邏輯;
3.混合開發,一開始不清楚和涉及自己任務的其他人的任務的銜接(如拍照頁面),一開始該問和自己任務相關的人到底在做什麼,大概負責的內容是什麼;
4.以測試和上線為中心很重要,自己的頁面可能還有點問題,在要測試的時候應以測試為中心,若阻擋測試流程,應註釋掉自己的問題代碼,或先砍掉自己的有問題的功能,以便整個項目流程能夠正常測試和正常上線;

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.