JsBridgeBiz.ets 2.11 KB
import { Callback } from 'wdJsBridge';
import { Message } from 'wdJsBridge/src/main/ets/bean/Message';
import { Logger } from 'wdKit';
import { H5CallNativeType } from './H5CallNativeType';
import { ContentDTO } from 'wdBean';
import { ProcessUtils } from 'wdRouter/src/main/ets/utils/ProcessUtils';

const TAG = 'JsBridgeBiz'

/**
 * h5调用native代码
 * @param data
 * @param call
 */
export function performJSCallNative(data: Message, call: Callback) {
  Logger.debug(TAG, 'performJSCallNative handlerName: ' + data.handlerName + ', data: ' + JSON.stringify(data.data))

  switch (data.handlerName) {
    case H5CallNativeType.jsCall_currentPageOperate:
      break;
    case H5CallNativeType.jsCall_getAppPublicInfo:
    // h5获取app配置信息
      call(getAppPublicInfo())
      break;
    case H5CallNativeType.jsCall_getArticleDetailBussinessData:
      break;
    case H5CallNativeType.jsCall_callAppService:
      handleJsCallCallAppService(data)
      break;
    case H5CallNativeType.jsCall_receiveH5Data:
      handleJsCallReceiveH5Data(data)
      break;
    case H5CallNativeType.jsCall_appInnerLinkMethod:
      handleJsCallAppInnerLinkMethod(data)
      break;
    case 'changeNativeMessage':
      call("this is change Web Message")
      break;
    default:
      call("this is def value")
  }

}

class AppInfo {
  plat: string = ''
  system: string = ''
  networkStatus: number = 1
  // TODO 完善
}

/**
 * 获取App公共信息
 */
function getAppPublicInfo(): string {

  let info = new AppInfo()
  info.plat = 'Phone'
  // 直接用Android,后续适配再新增鸿蒙
  info.system = 'Android'
  info.networkStatus = 1
  let result = JSON.stringify(info)
  Logger.debug(TAG, 'getAppPublicInfo: ' + JSON.stringify(info))

  return result;
}

function handleJsCallReceiveH5Data(data: Message) {
  switch (data?.data?.dataSource) {
    case 5:
      if (data?.data?.dataSource === 5) {
        ProcessUtils.processPage(JSON.parse(data?.data?.dataJson || '{}'))
      }
      break;
    default:

      break;
  }
}

function handleJsCallCallAppService(data: Message) {

}

function handleJsCallAppInnerLinkMethod(data: Message) {
}