zoukankan      html  css  js  c++  java
  • 原生 vs html5

    微信带动了html5 技术的广泛应用 有点夸张,但它确实火了一把。

    现在就来学习学习 ios 是如何与h5进行交互的;

    PART-ONE

    一、原理

    1.h5 与 ios 进行交互,首先得建立 webviewBridge ,沟通的桥梁;

    2.其次是双方的响应。

    a.先在h5端注册一个响应的名称。

    b.oc就可以通过这个名称对h5进行呼叫。

    c.oc发送消息给h5 分两种情况,一种是要求h5返回参数,而另一种是不要求h5返回数据

    PART-TWO

    二、使用

    比较好用的第三库 WebViewJavascriptBridge 

    第一步:注册一个UIWebView

    UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.bounds];

        [self.view addSubview:webView];

    第二步:注册“桥梁”
    - (void)viewDidload {
    if(self.bridge == nil) { return ;} [WebViewJavascriptBridge enableLogging]; self.bridge = [WebViewJavascriptBridge bridgeForWebVeiw:webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
      NSLog(@"Objc received message from JS :%@",data);
    }
      
    responseCallback(@"Response for message from Objc"); }];
    }

    第三步:JS调用OC方法

    [_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
            NSLog(@"testObjcCallback called: %@", data);
            responseCallback(@"Response from testObjcCallback");
        }];

    第四步:OC调用JS方法

    [_bridge callHandler:@"testObjcCallback" data:data responseCallback:^(id  response) {  

      response(@"Response from testObjcCallback");

    }

    第五:

    无参返回

    [_bridge send: @"this is a message from OC" ];

    有参返回

    [_bridge send:@"this a message from OC ,please answer the message when u see it" responseCallback(^id response) {

      NSLog(@"the answer from JS");

    }];

  • 相关阅读:
    为什么我要学习qt quick
    geometory Intersect
    删除kubernetes节点的正确姿势
    乞丐版docker私有仓库搭建
    kubernetes集群中由于某些原因导致etcd节点没有删干净,需要手动清理etcd节点
    k8s coredns设置上游name server
    虚拟机架设koolshare软路由
    文件类型特征码
    深入字节码 -- 计算方法执行时间
    启迪思维:二叉树
  • 原文地址:https://www.cnblogs.com/tony0571/p/5449473.html
Copyright © 2011-2022 走看看