| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { browser, getRandomKey } from '../common/common'
- /**
- *
- * 目前已支持API
- *
- * openWebView
- *
- * openMusicEvaluate 乐团课评价时调用
- * backRefreshPage 返回时刷新页面
- *
- */
- const loop = () => {}
- const calls = {}
- const browserInfo = browser()
- if (browserInfo.isApp) {
- window.addEventListener('message', evt => {
- try {
- const data = evt.data ? typeof evt.data === 'object' ? evt.data : JSON.parse(evt.data) : {}
- const uuid = data.content.uuid || data.uuid
- try {
- if (data.content) {
- data.content = JSON.parse(data.content)
- }
- } catch (error) {}
- if (!uuid) {
- const keys = Object.keys(calls).filter(key => key.indexOf(data.api) === 0)
- for (const key of keys) {
- const callback = calls[key] || loop
- callback(data)
- }
- return
- }
- const callback = calls[data.content.uuid || data.uuid || (data.api + data.uuid)] || loop
- callback(data)
- } catch (error) {
- console.error('通信消息解析错误', error)
- }
- })
- }
- const instance = window.DAYA || (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.DAYA)
- export const postMessage = (data, callback) => {
- if (browserInfo.isApp) {
- const uuid = getRandomKey()
- calls[uuid] = callback || loop
- data.content = data.content ? {...data.content, uuid} : {uuid}
- instance.postMessage(JSON.stringify(data))
- }
- }
- export const listenerMessage = (api, callback) => {
- if (browserInfo.isApp) {
- const uuid = api + getRandomKey()
- calls[uuid] = callback || loop
- }
- }
|