Commit 03d7de63 by cocomilk2012

update

parent d9f06327
......@@ -7,6 +7,7 @@ import server from '@/services/install';
// import FastClick from 'fastclick'
import '@/assets/css/index.less';
import * as filters from '@/utils/filters';
import bridge from "./utils/bridge/birdge.js";
Vue.config.productionTip = false;
// FastClick.attach(document.body);
......@@ -25,6 +26,8 @@ if (
const my_console = new VConsole();
}
Vue.prototype.$bridge = bridge;
new Vue({
router,
store,
......
function initJsBridge(readyCallback) {
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终端
// 注册jsbridge
function connectWebViewJavascriptBridge(callback) {
if (isAndroid) {
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener(
'WebViewJavascriptBridgeReady'
, function () {
callback(WebViewJavascriptBridge)
},
false
);
}
return;
}
if (isiOS) {
if (window.WebViewJavascriptBridge) {
return callback(WebViewJavascriptBridge);
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback);
}
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'https://__bridge_loaded__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function () {
document.documentElement.removeChild(WVJBIframe)
}, 0)
}
}
// 调用注册方法
connectWebViewJavascriptBridge(function (bridge) {
if (isAndroid) {
bridge.init('reloadTXLContact', function (data, responseCallback) {
//store.dispatch('changeTxlMember', data);
// data=JSON.parse(data);
// const date=Date.now();
// router.replace({ name: "addmembermanual", query: { name: data.name, linkway: data.linkway,date } });
responseCallback('received from native data:', data);
});
}
bridge.registerHandler('reloadTXLContact', function (data, responseCallback) {
//store.dispatch('changeTxlMember', data);
// data=JSON.parse(data);
// const date=Date.now();
// router.replace({ name: "addmembermanual", query: { name: data.name, linkway: data.linkway,date } });
responseCallback('received from native data:' + data);
});
readyCallback();
});
}
export default initJsBridge;
\ No newline at end of file
import jsBridge from './jsBridge';
/**
* H5与移动端桥接公共方法
*/
class Bridge {
/**
* 设置齐刘海头部颜色
*
* @param {Object=} args 请求数据
* @param {String} args.barColor 栏颜色 #0978e7
*/
setBarColor(args = {}) {
console.log('setBarColor');
return new Promise((resolve, reject) => {
try {
jsBridge.callHandler('setBarColor', args, function (response) {
resolve(response)
});
} catch (err) {
reject(err)
}
})
}
/**
* 获取头部栏高度
*
* @param {Object=} args 请求参数
*/
getBarHeight(args = {}) {
console.log('getBarHeight');
return new Promise((resolve, reject) => {
try {
jsBridge.callHandler("getBarHeight", args, function (response) {
resolve(response);
});
} catch (err) {
reject(err);
}
})
}
/**
* 设置页面导肮栏状态
*
* @param {Object} args 请求参数
* @param {Boolean} args.isShowClose 是否显示关闭
* @param {Boolean} args.isShowBack 是否显示返回
* @param {Boolean} args.isCloseLeft 是否关闭左侧
* @param {Boolean} args.isShowTitle 是否显示标题
* @param {Boolean} args.isShowNav 是否显示导航栏
* @param {Boolean} args.isCloseWebView 是否关闭WebView
*/
setPageNavState(args = {}) {
console.log('setPageNavState');
return new Promise((resolve, reject) => {
try {
jsBridge.callHandler("setPageNavState", args, function (response) {
resolve(response);
});
} catch (err) {
reject(err);
}
})
}
/**
* 关闭WebView
*
* @param {Object=} args 请求对象
*/
closeWebView(args = {}) {
return new Promise((resolve, reject) => {
try {
jsBridge.callHandler("closeWebView", args, function (response) {
resolve(response);
});
} catch (err) {
reject(err);
}
})
}
}
export default new Bridge();
let u = navigator.userAgent;
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
// 执行回调函数
function setupWebViewJavascriptBridge(callback) {
if (isAndroid) {
console.log('isAndroid===');
// 如果该对象已存在则直接执行
if (window.WebViewJavascriptBridge) {
callback(window.WebViewJavascriptBridge)
} else {
// 否则添加事件监听在执行
document.addEventListener(
'WebViewJavascriptBridgeReady',
function () {
callback(window.WebViewJavascriptBridge)
},
false
)
}
return;
}
if (isIOS) {
console.log('ios===');
if (window.WebViewJavascriptBridge) {
return callback(window.WebViewJavascriptBridge);
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback);
}
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'wvjbscheme://__bridge_loaded__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function () {
document.documentElement.removeChild(WVJBIframe)
}, 0)
}
}
// 注册回调函数
setupWebViewJavascriptBridge(function (bridge) {
if (isAndroid) {
//初始化
bridge.init(function (message, responseCallback) {
var data = {
'Javascript Responds': 'Wee!'
};
responseCallback(data);
})
}
})
// 暴露当前模块的方法
export default {
// js调APP方法 (参数分别为:app提供的方法名 传给app的数据 回调)
callHandler(name, data, callback) {
setupWebViewJavascriptBridge(bridge => {
bridge.callHandler(name, data, callback)
})
},
// APP调js方法 (参数分别为:js提供的方法名 回调)
registerHandler(name, callback) {
setupWebViewJavascriptBridge(bridge => {
bridge.registerHandler(name, (data, responseCallback) => {
callback(data, responseCallback)
})
})
}
}
\ No newline at end of file
......@@ -136,7 +136,34 @@ export default class SelectIdentity extends Vue {
});
}
private callJSBridage() {
const userAgent = navigator.userAgent.toLowerCase();
console.log("userAgent=", userAgent);
try {
if (userAgent.indexOf("qqxbua") != -1) {
console.log("setPageNavState");
this.$bridge
.setPageNavState({
isShowClose: true,
isShowBack: false,
isCloseLeft: true,
isShowTitle: true,
isShowNav: true,
isCloseWebView: true
})
.then(res => {
console.log("couponlist setpageNavState callback", res);
});
}
} catch (error) {
console.log(error);
}
}
async created() {
setTimeout(() => {
this.callJSBridage();
}, 500);
console.log("this.idVeri=", this.idVeri);
this.loading = Toast.loading({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment