微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/js/150158.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐