WKWebview – Javascript和本机代码之间的复杂通信

前端之家收集整理的这篇文章主要介绍了WKWebview – Javascript和本机代码之间的复杂通信前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在WKWebView中,我们可以使用webkit消息处理程序调用ObjectiveC / swift代码
例如:webkit.messageHandlers.< handler> .pushMessage(message)

它适用于没有参数的简单的JavaScript函数.但;

>可以使用JS回调函数调用本机代码作为参数吗?
>是否可以从本地代码返回一个值到JS函数

解决方法

不幸的是,我找不到本地解决方案.

但以下解决方法解决了我的问题

使用JavaScript承诺&您可以从iOS代码调用resolve功能.

UPDATE

这是你如何使用承诺

在JS中

this.id = 1;
    this.handlers = {};

    window.onMessageReceive = (handle,error,data) => {
      if (error){
        this.handlers[handle].resolve(data);
      }else{
        this.handlers[handle].reject(data);
      }
      delete this.handlers[handle];
    };
  }

  sendMessage(data) {
    return new Promise((resolve,reject) => {
      const handle = 'm'+ this.id++;
      this.handlers[handle] = { resolve,reject};
      window.webkit.messageHandlers.<yourHandler>.postMessage({data: data,id: handle});
    });
  }

在iOS中

调用window.onMessageReceive函数与适当的处理程序id

猜你在找的JavaScript相关文章