美文网首页
JSBridge的使用

JSBridge的使用

作者: 85ca4232089b | 来源:发表于2020-03-04 15:16 被阅读0次

一、什么是JSBridge

主要是给 JavaScript 提供调用 Native 功能的接口,让混合开发中的前端部分可以方便地使用 Native 的功能,是 Native 和非 Native 之间的桥梁,它的核心是构建 Native 和非 Native 间消息的双向通信的通道。
使用方法:

H5调用原生Native
原生将WKScriptMessageHandler绑定在window上
H5直接通过原生方法调用这个对象上的h5的接受方法
Native调用原生H5
H5将JSBridge绑定在window上
Native直接调用这个对象的原生接受方法

二、JSBridge使用

  1. Native 遵循WKScriptMessageHandler协议并实现它的代理方法,加载并显示webView
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message

2.在Native的生命周期中注入对象,前端调用其方法时,Native 可以捕获到

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
//注入
    [self.webView.configuration.userContentController addScriptMessageHandler:self name:@"H5定义的方法"];
}
-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    //移除
    [self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"H5定义的方法"];
}

3.最后在代理方法中处理具体的逻辑事物

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    [super userContentController:userContentController didReceiveScriptMessage:message];

    if ([message.name isEqualToString:@"nativeBridge"]) {
        NSLog(@"前端传递的数据 %@: ",message.body);
        // Native 逻辑
    }
}

三、拦截 URL SCHEME

Web 端通过某种方式(例如 iframe.src)发送 URL Scheme 请求,之后 Native 拦截到请求并根据 URL SCHEME(包括所带的参数)进行相关操作
•使用 iframe.src 发送 URL SCHEME 会有 url 长度的隐患。
• 创建请求,需要一定的耗时,比注入 API 的方式调用同样的功能,耗时会较长。
因此:JavaScript 调用 Native 推荐使用注入 API 的方式

     NSString *jsStr = [NSString stringWithFormat:@"reload()"];
       [self.webView evaluateJavaScript:jsStr completionHandler:^(id _Nullable result, NSError * _Nullable error) {       
       }];

我的理解如果有错漏请一定指出,非常感谢!

相关文章

  • iOS 上使用jsBridge的方法

    iOS 上使用jsBridge的方法 iOS 代码实现 这上面注意点 var type = "JSbridge";...

  • JSBridge的使用

    一、什么是JSBridge 主要是给 JavaScript 提供调用 Native 功能的接口,让混合开发中的前端...

  • Android中JSBridge的原理与实现

    首先我们来了解一下什么是JSBridge和为什么要使用JSBridge? 在开发中,为了追求开发的效率以及移植的便...

  • JsBridge使用演示

    在Android项目开发中,如果需要在Android程序中调用web中的功能,我们可以用Jsbridge来作为桥梁...

  • WebView优化

    使用框架 使用大鬼头的JsBridge框架 JS调取原生 1.Android使用如下 data参数规则如下 例如 ...

  • WebView优化协议

    使用框架 使用大鬼头的JsBridge框架使用之前需要仔细阅读框架的规则 使用的data参数规则如下 例如 返回结...

  • 简易理解JSBridge实现原理

    一、JSBridge介绍 1.1、定义 JSBridge是什么?JSBridge是一种桥接器,通过JS引擎或Web...

  • 【Android开发】JsBridge的使用

    配置 Activity代码 html 结果 参考文章:Android JSBridge的原理与实现Android ...

  • Android中WebView的使用,加载H5

    1、Android中WebView的使用,加载H52、Android原生和H5、JS交互,使用JsBridge 1...

  • JsBridge源码分析

    参考:Android 与 JS 之 JsBridge 使用与源码分析demo地址:JsBridgeDemo今天分析...

网友评论

      本文标题:JSBridge的使用

      本文链接:https://www.haomeiwen.com/subject/uomvlhtx.html