首页

3/16/2021

警告

API v1 版本是早前开发阶段遗留的 API,将来可能移除或修改,请不要使用。 如果业务场景必须使用都某个 API,请线下联系希沃白板相关人员。

本组页面是 API(v1) 相关的描述,API(v1) 是间接 API。

推荐使用 API(v2)

# 间接 API

间接 API 是指,所有的函数调用,都是调用 InvokeMethod 这一个方法,而在这个方法的参数中,传递具体要调用的功能。

InvokeMethod 的方法参数为一个对象的 Json 序列化字符串。

{
    id: "可选参数,标识调用的唯一 ID",
    method: "实际执行的方法名",
    args: "方法参数"
}

方法参数也是一个对象的 Json 序列化字符串。

{
    param1: "value1",
    param2: "value2"
}

# Web 页面与希沃白板的调用模式

在插件机制中,为了保持与本机代码更好的兼容性,包括方法名在内的所有方法也都使用字符串参数,因此,实际上在随后的所有方法调用都应该遵循以下模式:

window.external.InvokeMethod(
    JSON.stringify({
        "method": "实际方法名",
        "args": JSON.stringify({
            "参数1": "值1",
            "参数2": "值2",
            "参数3": "值3"
        })
    })
)

其中,InvokeMethod 中传入对象的定义为:

interface WebToolParamModel {
    /**
    * 本次调用的唯一标识字符串,可任意生成,用于匹配针对此方法的回调函数。
    * 此属性为可选属性,如果不指定或指定为空字符串,则不会调用回调函数通知执行结果。
    */
    id?: string;

    /**
    * 需要调用的方法名,可在随后的 API 详细文档中了解所有可使用的方法名。
    */
    method: string;

    /**
    * 调用此方法需要传入的参数。应该格式化成 JSON 字符串。
    * 需要注意的是,对于每个在 API 文档中提及的 API,方法应该传入的参数应遵循方法的参数定义,但最终必须在此格式化为 JSON 字符串。
    */
    args?: string
}

如果期望在调用方法结束后得到返回,你需要定义一个回调方法:

function ExternalCallback(result) {
    // 针对 result 进行处理。
}

并将此回调通过以下方法加入到信号监听中:

receive(signal: string, callback: Function) {
    window[signal] = (params) => {
        callback(params);
    };
}

对于以上的 ExternalCallback,参数 result 的类型定义如下:

interface WebToolReturnModel {
    /**
    * 如果在 InvokeMethod 的参数中指定了 Id 属性,那么在回调中的此 Id 属性将与之对应,表示这是针对那个特定调用的回调。
    */
    id: string;

    /**
    * 在 InvokeMethod 调用时的方法名,也是与那个调用对应。
    */
    method: string;

    /**
    * 如果 API 中声明某个方法有返回值,那么这里将是此返回值的 JSON 字符串。
    */
    result?: string;

    /**
    * 如果某 API 调用发生异常(客户端异常),则此值为异常字符串,建议仅用于调试。
    */
    exception?: string;
}
更新时间: Tuesday, February 15, 2022 11:21