技術總結
一、實名認證頁面(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.以測試和上線為中心很重要,自己的頁面可能還有點問題,在要測試的時候應以測試為中心,若阻擋測試流程,應註釋掉自己的問題代碼,或先砍掉自己的有問題的功能,以便整個項目流程能夠正常測試和正常上線;