移动混合开发之Html如何通过url与native通信

最近,发现h5越来越火了,最近做一个项目,就是用h5来写页面和逻辑,但是还是有一些问题h5是没有办法解决的,那就是第三方登录,和分享还有支付的功能,所以这里就涉及到h5与iOS交互的问题,也就是h5与iOS相互调用。 说明: (1)Objective-C调用JavaScript代码的时候是同步的

  • (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script; (2)JavaScript调用Objective-C代码的时候是异步的
  • (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 那么我们的需求是h5调用OC的代码然后来完成分享,登录,和支付.所以在运用的时候用了"URL拦截"的方法,那么如何进行URL拦截呢,那么有两种方法,第一种就是使用拦截器,但是所得到的url是不固定的,所以这种方法不适合使用,那么第二种方法就是使用webview的代理方法,shouldStartLoadWithRequest,当然,用这个拦截那么就会得到一个固定的url.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    
    
    NSString *urlstr = request.URL.absoluteString;
    NSString *tmp = [urlstr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    NSRange range = [tmp rangeOfString:@"app://"];
    if (range.length != 0) {
        NSString *JSRequest = [tmp substringFromIndex:(range.location+range.length)];
        [self doForJSRequest:JSRequest];
        return NO;
    }
    return YES;
}

到这里就可以拦截到url ,然后就可以进行你一些方法的调用啦.

转载于:https://my.oschina.net/u/2404655/blog/757928

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值