/**
|
* 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
|
) {});
|
});
|
},
|
closeApp() {
|
if (window.android && window.android.closeActivity) {
|
window.android.closeActivity();
|
}
|
},
|
// 获取原生设备信息
|
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) {
|
// })
|
// })
|
},
|
// 打开相册
|
openQrCode() {
|
// for android
|
if (window.android && window.android.fetchQrCode) {
|
window.android.fetchQrCode();
|
} else {
|
}
|
// for iOS
|
},
|
|
// 打开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);
|
}
|
});
|
});
|
}
|
|
// 检查定位权限是否打开
|
// checkUserAuthorization(callback) {
|
// // for android
|
// if (deviceInfo.isAndroidDevice()) {
|
// if (window.native && window.native.checkUserAuthorization) {
|
// let isOpen = window.native.checkUserAuthorization();
|
// if (isOpen && isOpen === 'true') {
|
// callback(true);
|
// } else {
|
// callback(false);
|
// }
|
// } else {
|
// callback(true);
|
// }
|
// }
|
// // for iOS
|
// setupWebViewJavascriptBridge(function (bridge) {
|
// bridge.callHandler('kJSCheckUserAuthorization', function responseCallback(responseData) {
|
// if (responseData && responseData === 'true') {
|
// callback(true);
|
// } else {
|
// callback(false);
|
// }
|
// })
|
// })
|
// }
|
};
|