d***@xzsz.ltd
d***@xzsz.ltd
  • 发布:2021-01-15 20:05
  • 更新:2021-01-19 15:19
  • 阅读:1251

uni-app发行的H5在iOS wkwebview 打开, H5如和发送消息给iOS原生

分类:uni-app

你好,我在iOS里面用原生的WKWebview加载h5页面,同时再原生的里面做了扩展,但uni-app里面使用window.webkitPostMessage('success')或者window.postMessage('success'),正常的网页使用window.webkit.messageHandlers.success.postMessage('success')在iOS端就可以接收到,请问这种原生的如何解决,因为我们的这个H5页面也要提供给别人的原生的wkwebview使用

2021-01-15 20:05 负责人:无 分享
已邀请:
5***@qq.com

5***@qq.com - 小竹熊 云科技

我也遇到了同样的问题 请问是怎么解决的

  • d***@xzsz.ltd (作者)

    window.webkit.messageHandlers['xxxname'].postMessage('') 这样就解决了,我也很纳闷,对象.不出来,用[]就可以取,可能是js对象的问题

    2021-01-22 16:04

BobDaD

BobDaD

方法命名要规范!方法命名要规范!方法命名要规范!重要的事情说三遍!方法命名success ???
兄弟,我猜应该是你iOS的WKWebview的configuration的问题。你看看你addScriptMessageHandler时候添加进去没。
首先在WKWebView里addScriptMessageHandler,注册对js的xx的方法监听

self.wkwView.configuration.userContentController.add(self, name: "load")  

然后代理方法进行监听,name一定要一致!

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {  

    if (message.name == "goBack") {  
        self.dismiss(animated: true, completion: nil)  
    }  
}  

至于js里的方法名,和name也要一致。

  • d***@xzsz.ltd (作者)

    我的iOS里面的名字是一致的就是这么写的,最后我改成window.webkit.messageHandlers['xxxname'].postMessage('')就可以了

    2021-01-22 16:03

该问题目前已经被锁定, 无法添加新回复