import initSubscribe from 'uni-core/service/bridge/subscribe' import { VD_SYNC, VD_SYNC_CALLBACK, INVOKE_API, WEBVIEW_READY, WEB_INVOKE_APPSERVICE, WEBVIEW_INSERTED, WEBVIEW_REMOVED } from '../../../constants' import { registerPlusMessage } from '../plus-message' import onWebviewReady from './on-webview-ready' import onVdSync from './on-vd-sync' import onVdSyncCallback from './on-vd-sync-callback' import onInvokeApi from './on-invoke-api' import onWxsInvokeCallMethod from './on-wxs-invoke-call-method' import { onWebviewInserted, onWebviewRemoved } from './on-webview-lifecycle' export function initSubscribeHandlers () { const { on, emit, subscribe, publishHandler, subscribeHandler } = UniServiceJSBridge initSubscribe(subscribe, { getApp, getCurrentPages }) registerPlusMessage('subscribeHandler', (data) => { subscribeHandler(data.type, data.data, data.pageId) }) if (__uniConfig.renderer !== 'native') { subscribe(WEBVIEW_READY, onWebviewReady) subscribe(VD_SYNC, onVdSync) subscribe(VD_SYNC_CALLBACK, onVdSyncCallback) const entryPagePath = '/' + __uniConfig.entryPagePath const routeOptions = __uniRoutes.find(route => route.path === entryPagePath) if (!routeOptions.meta.isNVue) { // 首页是 vue // 防止首页 webview 初始化过早, service 还未开始监听 publishHandler(WEBVIEW_READY, Object.create(null), [1]) } } // 应该使用subscribe,兼容老版本先用 on api 吧 on('api.' + WEB_INVOKE_APPSERVICE, function (data, webviewIds) { emit('onWebInvokeAppService', data, webviewIds) }) subscribe('onWxsInvokeCallMethod', onWxsInvokeCallMethod) subscribe(INVOKE_API, onInvokeApi) subscribe(WEBVIEW_INSERTED, onWebviewInserted) subscribe(WEBVIEW_REMOVED, onWebviewRemoved) }