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];
}
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"]) {
//跳转到订单界面
}
}];