推广 热搜: 行业  设备    系统  参数  经纪    教师  机械  中国 

WKWebView+JSPatch注入代码,实现H5与原生页面的灵活交互

   日期:2025-01-02     作者:xwnjl    caijiyuan   评论:0    移动:http://sjzytwl.xhstdz.com/mobile/news/12887.html
核心提示:很多人的项目都会用到UIWebView或WKWebView,时常要让H5页面和原生页面交互。常见的方法有url拦截(UIWebView,WKWebView都支持

很多人的项目都会用到UIWebView或WKWebView,时常要让H5页面和原生页面交互。

WKWebView+JSPatch注入代码,实现H5与原生页面的灵活交互

常见的方法有url拦截(UIWebView,WKWebView都支持),最典型的应该是WebViewJavascriptBridge利用看不见的iframe来实现的方法。

还有就是通过JavascriptCore (UIWebView支持,WKWebView不支持)来实现。

我介绍的是一种很另类的方法,也没见过别人用过,但我试着用于生产中了,对线程和内存管理理解的好的话,这种方法会很灵活好用。

将WKWebView和JSPatch结合起来使用,从而向APP里注入代码。

这样做能让H5页面和原生页面的交互大大加强。

若要通过H5页面导入脚本,就得让WKWebView和原生层面能够交互。


关键的两句话是:


self必须得遵循【WKscriptMessageHandler】协议。
Loadscript和DoFunction就相当于消息处理者。然后会在JS脚本中被用到。

在H5中需要执行的JS代码是:


postMessage()里面的参数可以是:Number, String, Date, Array,
Dictionary, and null.和OC对应关系为:

JS OC Number NSNumber String NSString Date NSDate Array NSArray Dictionary NSDictionary null NSNull

下面是官方注释:


【WKscriptMessageHandler】协议的回调写法:


H5执行loadscript()后会执行


[JPEngine evaluatescript:script]会将脚本转换为原生代码,即把script中的方法在APP运行时注册。

H5执行doFunction后会执行:


很简单的实现了H5向原生注入代码。

1.注入的代码会曝光在浏览器中,最好使用aes加密,

可以使用我写的一个加密工具CryptoBuff.

2.是在子线程中执行的。

所以"- (void)userContentController:(WKUserContentController *)userContentController
didReceivescriptMessage:(WKscriptMessage *)message"是异步回调的。

本文地址:http://sjzytwl.xhstdz.com/news/12887.html    物流园资讯网 http://sjzytwl.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号