文档章节

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

 完颜维
发布于 2016/10/13 12:12
字数 346
阅读 8
收藏 0

最近,发现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 ,然后就可以进行你一些方法的调用啦.

© 著作权归作者所有

粉丝 0
博文 6
码字总数 1530
作品 0
海淀
私信 提问
加载中

评论(1)

完颜维 博主
又发表了一篇
浅谈Native、Web App、Hybrid、RN 和 Weex优劣

一句话概要 Native、Web App、Hybrid、React Native(后面以RN简称)、Weex 间的异同点,后期同步 小程序 和 PWA App常用开发模式【简介】 此处App为应用,application,并非我们通常讲的手机...

木羽zwwill
2017/09/19
0
0
Cordova App 打包全揭秘

[运营专题]零预算引爆个人和企业品牌【原文链接】 Selenium 自动化测试从零实战【原文链接】 原来这样做,才能向架构师靠近【原文链接】 TensorFlow on Android:物体识别【原文链接】 Tens...

gitchat
2017/11/17
0
0
移动应用混合开发模式架构,看长虹如何演变?

  【IT168 专场报道】SACC2017第九届中国系统架构师大会于10月19日在北京新云南皇冠假日酒店隆盛大开幕,在大会第一天下午的移动技术专场中,来自四川长虹电器移动业务线产品总监首席架构师...

it168网站
2017/10/20
0
0
移动开发:Native、Hybrid与HTML5

WEB APP、HYBRID APP与NATIVE APP的设计差异:http://www.uisdc.com/web-hybrid-native-app 移动应用开发指南:Native、Hybrid与HTML5(1):http://mobile.51cto.com/web-412307.htm 一张图告......

智能小松鼠
2015/09/01
365
0
Hybrid App 发展史

目录 1 概述 2 Cordova 平台 3 Web 发展史 3.1 静态网页 3.2 动态网页 3.3 客户端异步交互 3.4 开发效率提速阶段 3.5 移动平台 4 Hybrid App 分类一 4.1 多View混合型 4.2 单View混合型 4.3 ...

数学角度看生活
2017/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 脚本引擎入门

Java Script Engine Java 脚本引擎可以将脚本嵌入Java代码中,可以自定义和扩展Java应用程序,自JDK1.6被引入,基于Rhino引擎,JDK1.8后使用Nashorn引擎,支持ECMAScript 5,但后期还可能会换...

阿提说说
56分钟前
5
0
05.深入浅出索引(下)

在下面这个表T中,如果我们执行select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行? mysql> create table T ( id int primary key, k int not null default...

scgaopan
昨天
6
0
设计模式-中介者模式

设计模式-中介者模式 定义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互 UML 组成部分主要包含 Mediat...

木本本
昨天
5
0
Python 周刊第 418 期

新闻 PyCon US 2020 开始接受财务赞助! https://pycon.blogspot.com/2019/10/financial-aid-launches-for-pycon-us-2020.html2020年 Python 美国开发者大会,tips: 中国也有,可以赞助国内的...

iCodeBugs
昨天
5
0
ThreadLocal源码阅读

首先,从set方法入手, // ThreadLocalpublic void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t);//这里可以看出,从Threa......

小海bug
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部