icx-meum-vue-common-module
Version:
icx-meum-vue-common-module
79 lines (69 loc) • 2.43 kB
JavaScript
/**
* Created by wangbagang on 2017/4/11.
*/
import { STRING_APP_METHOD_REQUEST_WEB_CODE, STRING_DEVICE_TYPE_ANDROID, STRING_APP_LOGIN_SUCCESS, STRING_APP_APP_MALL_BUY_SUCCESS } from '../icx/const'
import { getDeviceType, checkIsNullOrEmpty, isMeumApp } from '../icx/utils'
import request from './http'
const JsBridge = function () {
function setupWebViewJavascriptBridge (callback) {
if (!isMeumApp()) {
return
}
if (window.WebViewJavascriptBridge) {
return callback(window.WebViewJavascriptBridge)
}
if (getDeviceType() === STRING_DEVICE_TYPE_ANDROID) {
document.addEventListener('WebViewJavascriptBridgeReady', function () {
callback(window.WebViewJavascriptBridge)
}, false)
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback)
}
window.WVJBCallbacks = [callback]
let WVJBIframe = document.createElement('iframe')
WVJBIframe.style.display = 'none'
WVJBIframe.src = 'https://__bridge_loaded__'
document.documentElement.appendChild(WVJBIframe)
setTimeout(function () {
document.documentElement.removeChild(WVJBIframe)
}, 0)
}
setupWebViewJavascriptBridge(function (bridge) {
if (getDeviceType() === STRING_DEVICE_TYPE_ANDROID) {
bridge.init(function (message, responseCallback) {
let data = {}
responseCallback(data)
})
}
bridge.registerHandler('getAppData', function (data, responseCallback) {
responseCallback()
})
})
// 观察app的登录状态
window.receivedNativeState = function (state) {
if (state.type === STRING_APP_LOGIN_SUCCESS || state.type === STRING_APP_APP_MALL_BUY_SUCCESS) {
window.location.reload()
}
}
window.getAuthToken = function (cb) {
if (window.WebViewJavascriptBridge) {
window.WebViewJavascriptBridge.callHandler(STRING_APP_METHOD_REQUEST_WEB_CODE, {}, function (response) {
if (!checkIsNullOrEmpty(response)) {
request('https://api.icarbonx.com/auth/web-code/login', { code: response }, 'POST').then(function () {
if (cb) {
cb()
} else {
window.location.reload()
}
}).catch(function (e) {
alert(e + ' 服务器错误,请重新尝试')
})
}
})
} else {
alert('初始化失败,请退出重新尝试')
}
}
}
export default JsBridge