WebViewJavascriptBridge实现APP与H5交互

1、集成WebViewJavascriptBridge;

2、创建webview文件,例如"LMWebview";

3、和H5协商规则。

一、app向H5传递参数

例如,方法名为GiveInfomationToH5,要传递的数据是用户的名称userName。

第一步,在LMWebview文件中初始化WebViewJavascriptBridge,

@property (strong, nonatomic) WebViewJavascriptBridge *bridge;

- (WebViewJavascriptBridge *)bridge {

    if (!_bridge) {

        _bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView];

        [_bridge setWebViewDelegate:self];

扫描二维码关注公众号,回复: 5185643 查看本文章

    }

    return_bridge;

}

第二步,注册方法GiveInfomationToH5,并传递参数,

[self.bridge registerHandler:@"GiveInfomationToH5" handler:^(id data, WVJBResponseCallback responseCallback) {

        NSString *names = @"用户名";

        NSMutableDictionary *dictUserInfo = [NSMutableDictionary dictionary];

        [dictUserInfosetValue:names forKey:@"userName"];

        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictUserInfo options:NSJSONWritingPrettyPrinted error:nil];

        NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

        responseCallback(jsonString);

    }];

这样当H5页面加载成功的时候,H5就可以获取到app传递过去的userName。

二、H5点击事件与app交互。

例如,点击H5上一个按钮,期望APP跳转到相应界面。

方法名PushToPage,参数method:pushtobuy购买界面,toMyOrderList订单界面。

DYY_WEAK_SELF;

    [self.bridge registerHandler:@"PushToPage" handler:^(id data, WVJBResponseCallback responseCallback) {

        NSDictionary *dictData = [NSDictionary dictionary];

        if ([data isKindOfClass:[NSDictionary class]]) {

            dictData = data;

        }else if ([data isKindOfClass:[NSString class]]) {

            dictData = [data yyDicOfJson];

        }else {

            NSAssert(data,@"从H5拿到的data为空!");

        }

        if ([dictData[@"method"]isEqualToString:@"pushtobuy"]) {

            //跳到购买界面

        }else if ([dictData[@"method"]isEqualToString:@"toMyOrderList"]) {

            //跳转到订单界面

        }

    }];

猜你喜欢

转载自blog.csdn.net/weixin_33894640/article/details/87442577