/** * Created by c.k on 2017/11/20. * global WebViewJavascriptBridge * */ import deviceInfo from './deviceInfo'; // import store from '../store' // import statisticHelper from './statisticalHelper' // import channelHelper from './channel' const setupWebViewJavascriptBridge = callback => { // 注册事件监听 if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } else { document.addEventListener('WebViewJavascriptBridgeReady', () => { callback(WebViewJavascriptBridge); }, false); } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; let WVJBIframe = document.createElement('iframe'); WVJBIframe.style.display = 'none'; WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__'; document.documentElement.appendChild(WVJBIframe); setTimeout(function () { document.documentElement.removeChild(WVJBIframe); }, 0); }; export default { showLog(log) { setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('showLog', log, function responseCallback(responseData) { }); }); }, // 获取原生设备信息 fetchDeviceInfo() { if (deviceInfo.getDeviceType() === 'Android') { if (window.android && window.android.fetchDeviceInfo) { let responseData = window.android.fetchDeviceInfo(); deviceInfo.saveDeviceInfo(responseData); } } else { setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSFetchDeviceInfo', function (responseData) { deviceInfo.saveDeviceInfo(responseData); }); }); } }, // 回传页面链接至原生 sendApplyPageUrlToNative() { setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSFetchApplyURL', window.location.href, function responseCallback(responseData) { }); }); }, // 回传页面信息至原生 sendApplyPageInfoToNative(info) { setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSFetchProductInfo', info, function responseCallback(responseData) { }); }); }, // 每次启动app时清除之前的登录状态 logoutWhenAppLaunch() { // for android // window.forceLogoutWhenAppLaunch = function () { // store.dispatch('logout') // // 首次进入app,默认统计第一个按钮点击事件 // statisticHelper.tabbarEventStatistical('loansupermarket'); // } // for iOS // setupWebViewJavascriptBridge(function (bridge) { // bridge.registerHandler('kJSAppLaunch', function (data) { // store.dispatch('logout') // // 首次进入app,默认统计第一个按钮点击事件 // statisticHelper.tabbarEventStatistical('loansupermarket'); // }) // }) // if (!channelHelper.isApp()) { // statisticHelper.tabbarEventStatistical('loansupermarket'); // } }, // 隐藏原生启动页 hideNativeLaunchImage() { // for android if (window.appNative && window.appNative.hideLaunchView) { window.appNative.hideLaunchView(); } // for iOS setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSHideLaunchImage', function responseCallback(responseData) { }); }); }, // 隐藏显示原生header showAndHideNativeHeader(show) { // for android if (window.native && window.native.showHeader) { window.native.showHeader(show); } // for iOS setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSShowAndHideNativeHeader', show, function responseCallback(responseData) { }); }); }, // 打开微信 openWX() { // for android if (window.android && window.android.openWX) { window.android.openWX(); } // for iOS // setupWebViewJavascriptBridge(function (bridge) { // bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) { // }) // }) }, // 打开QQ openQQ() { // for android if (window.android && window.android.openQQApplication) { window.android.openQQApplication(); } // for iOS // setupWebViewJavascriptBridge(function (bridge) { // bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) { // }) // }) }, //打开通讯录 openConect(callback){ console.log('js打开通讯录'); //for iOS setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSOpenConect', function responseCallback(responseData) { }); bridge.registerHandler('sendContectInfo', function (data, responseData) { if (callback) { callback(data); } }); }); }, //获取高德地图定位位置信息 getAMMapLoactionMsg(callback){ console.log('js获取位置信息'); setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSGetAMMapLoactionInfo', function responseCallback(responseData) { // alert(responseData.detail); if (callback) { callback(responseData); } }); // bridge.registerHandler('sendAMMapLoactionInfo',function (data,responseData) { // // alert(data.address); // if(callback){ // callback(data); // } // }) }); }, //调用ios相机 openCamera(callback){ setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSGetCameraInfo', function responseCallback(responseData) { if (callback) { callback(responseData); } }); }); }, openAlbum(callback){ setupWebViewJavascriptBridge(function (bridge) { bridge.callHandler('kJSGetAlbumInfo', function responseCallback(responseData) { if (callback) { callback(responseData); } }); }); }, };