hybrid开发调试记录
1 flider代理
app任意打開webview加載任意一個網(wǎng)址,然后我們用flider代理到本地文件 在頁面加入點擊事件 條主電腦本地啟動的 server 127.0.0.1
注意 有的app 做了安全限制 webview只能加載特定的url 所以我們需要修改webpack配置文件 并設(shè)置本地host 復(fù)制代碼-  本地host軟件 switchhost 比如配置 127.0.0.1 kk.com 復(fù)制代碼
-  webpack 配置文件修改 ... devServer: {disableHostCheck: true ,... 復(fù)制代碼
如果不修改webpack 配置 則 用host訪問webpackdevserver啟動的server時候則會提示 Invalid Host header
2 js通信文件
h5 與 Android和ios通信主要有兩部分
-  sdk-platform.js 掛在到window上的方法,入?yún)⒊鰠?從這里傳入傳出 /*** app推送消息監(jiān)聽* @param busisessType 指定監(jiān)聽的業(yè)務(wù)類型* @param callback*/onPush: function (busisessType, callback) {//8if (tools.required(this.debug, {"busisessType": busisessType,"callback": callback}, 'onPush')) {tools.on('platform', 'onPush', {busisessType: busisessType}, callback)}}}})(window, window.wallet.tools); 復(fù)制代碼
-  jsBridge-1.0.0.js 入?yún)⒊鰠魅朐?這里ios 和Android調(diào)用方法不同需要做一下區(qū)分 
android
var res= w[nativeNS].invoke(methodName, JSON.stringify(param), addCall(callback, methodName)); 復(fù)制代碼ios
message = {'methodName':methodName,'params':JSON.stringify(param),'callback':addCall(callback, methodName)};var res = window.webkit.messageHandlers.invoke.postMessage(message); 復(fù)制代碼其實就是Android可以直接通過Android定義的方法直接調(diào)用,而ios不可以,需要通過postmessge方法
-  wraper.js 前端代理客戶端提供方法 /*** 根據(jù)輸入的手機號獲取通訊錄列表* @param {*} obj */export function getPhonesByNumber (num) {if (!isAPP) {return false}return new Promise(reslove => {window.wallet.platform.getPhonesByNumber({inputdata: num}, data => reslove(data.data))})} 復(fù)制代碼
對客戶端的方法實現(xiàn)了同名的代理方法,這樣的好處是可以避免h5運行在容器報錯,同時用promise封裝原來的callback回調(diào),外層使用可以用await語法 更加簡潔,此處還可以添加默認參數(shù) 等等
2 android實現(xiàn)ajax
考慮到做加密 h5無法保證cookie加密,所以ajax由原生實現(xiàn)。。
to be continued...
轉(zhuǎn)載于:https://juejin.im/post/5b1f6e83f265da6e1e1ae6fd
總結(jié)
以上是生活随笔為你收集整理的hybrid开发调试记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 无止境的内存优化——停不下的循环
- 下一篇: 6.12 理解递归
