h5交互

本文介绍如何在iOS应用中实现WebView与JavaScript之间的双向通信,包括使用WebViewJavascriptBridge库简化交互过程,以及如何处理页面返回操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

//webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType


       然而这次的交互要求是进行双向通信,即JS调用原生App的方法之后,原生App要讲相关参数信息返回给H5页面,H5页面接受到参数信息后做其他处理。

例:H5页面的发布信息按钮,在点击按钮后要在原生端判断用户是否登录,若没有登录则弹出原生登录页面,登录成功后将用户信息返回给H5页面,继续发布流程。


重点来了!

在这里推荐一个比较好的第三方库即:WebViewJavascriptBridge 

地址:https://github.com/marcuswestin/WebViewJavascriptBridge

通过使用该库可以轻松实现JS与原生交互。

//初始化WebViewJavascriptBridge方法

_bridge= [WebViewJavascriptBridge bridgeForWebView:self.BookWebView webViewDelegate:self handler:^(id data,WVJBResponseCallback responseCallback) {

}];

//原生与JS约定接口名为“testObjcCallback”,data是JS传递过来的信息,responseCallback来将信息传递给JS

[_bridge registerHandler:@"testObjcCallback" handler:^(id  data,WVJBResponseCallback responseCallback) {

responseCallback("postInfomationToJS")

}];


UIWebView页面信息的离线缓存

推荐一个比较好的第三方库RNCachingURLProtocol ,只需要在AppDelegate中加入下面方法即可。

[NSURLProtocolregisterClass:[RNCachingURLProtocolclass]];

地址:https://github.com/rnapier/RNCachingURLProtocol




iOS webView与H5的交互(返回页面的处理)

开发中,如果项目中内嵌网页,而且可以点击进入网页的详情页等,网页有没有做返回按钮的话,直接点击系统的返回按钮,就会出现直接跳出H5网页,如果只是想跳出详情页,到达上一层内嵌网页的话,可以用以下方法:

//用苹果自带的返回键按钮处理如下(自定义的返回按钮)
- (void)back:(UIBarButtonItem *)btn
{
if ([self.webView canGoBack]) {
[self.webView goBack];
 
}else{
[self.view resignFirstResponder];
[self.navigationController popViewControllerAnimated:YES];
}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值