JS调用Android、Ios原生控件


Posted in Javascript onJanuary 06, 2017

在上一篇博客(详解JS与APP原生控件交互)中已经和大家聊了,关于JS与Android、Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android、Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时,提高代码质量,实现两者在网页端代码的统一。

首先我们先看一下Ios调用JS的方法实现:

//无参调用
function SwiftCallJs1(){}
//有参调用
function SwiftCallJs2(name, message){}

紧接着我们看一下Android调用JS的方法实现:

//无参调用
function AndroidCallJs1(){}
//有参调用
function AndroidCallJs2(data){}

从上面的代码中你是否发现,Android与Ios调用JS时,JS处理函数两者在无参调用时是相通的。有参调用不同点是Ios是一对一直接传递,Android则是字符串传递,当然我们可以通过在Android和Ios端统一传参使用JSON格式,JS支持JSON解析,从而实现两个平台在有参方法调用上的统一。

看完上面的Ios与Android调用JS,下面我们看一下JS调用Android与Ios原生通信的异同点。

首先我们看一下JS调用Android的方法实现:

//无参调用
function callNull(){
 android.CallNull(); 
}
//有参调用
function callMessage(){
 android.CallMessage("msg");
}
//有参调用--json
function callJson(){
 var json = "[{\"name\":\"满艺网\",\"url\":\"www.manyiaby.com\"}]";
 android.CallJson(json);
}

接下来我们看一下JS调用Ios的方法实现:

//一:无前缀调用
//无参调用
function test1(){
 Test1();
}
//有参调用
function test2(){
 Test2("满艺网","www.manyiaby.com");
}
//二:有前缀调用
//无参调用--带返回操作结果处理
function callSystem(){
 Ios.CallSystem();
}
//操作结果处理函数
function JSCallNullIosResult(){}
//有参调用
function callWithMsg(){
 Ios.CallWithMsg("满艺网","www.manyiaby.com");
}
//有参调用--json
function callWithJson(){
 var json = "{\"name\":\"满艺网\",\"url\":\"www.manyiaby.com\"}";
 Ios.CallWithJson(json);
}
//有参调用--带返回结果处理
function callWithJsonResult(){
 var json = "{\"name\":\"满艺网\",\"url\":\"www.manyiaby.com\"}";
 Ios.CallWithJsonResult(json);
}
function JSCallJsonIosResult(data){
 alert("name:"+data["name"]); 
}

看到这里你一定发现了不同点,1、Android没有不带前缀的方法调用,2、Android没有方法调用后的操作结果返回处理逻辑。对于第一点,就目前我所认识到的是原生没有通过具体的实现逻辑,不过这个点不影响我们的开发,因为Ios是支持前缀方法调用的。对于第二点,我的理解是对于返回处理函数,我们可以在开发的添加上去,从而提高Ios用户的使用体验,并且处理函数不会影响到方法的调用。

好了到这里就和大家聊完了,当然如果所述与您的理解有偏差,还望指点一二。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
判断滚动条到底部的JS代码
Nov 04 Javascript
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
Jun 05 Javascript
基于BootStrap实现局部刷新分页实例代码
Aug 08 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
Jun 03 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
JS实现的简单表单验证功能示例
Oct 13 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
Sep 29 Javascript
微信小程序登录session的使用
Mar 17 Javascript
一篇文章看懂JavaScript中的回调
Jan 05 Javascript
JS正则匹配中文的方法示例
Jan 06 #Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
Jan 06 #Javascript
JS获取多维数组中相同键的值实现方法示例
Jan 06 #Javascript
JavaScript用JSONP跨域请求数据实例详解
Jan 06 #Javascript
js实现前端分页页码管理
Jan 06 #Javascript
纯js实现倒计时功能
Jan 06 #Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
Jan 06 #Javascript
You might like
smarty实例教程
2006/11/19 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php绘制一个矩形的方法
2015/01/24 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
Python短信轰炸的代码
2020/03/25 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
新员工入职感言
2014/02/01 职场文书
企业安全生产标语
2014/06/06 职场文书
公司应聘自荐书
2014/06/14 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
金陵十三钗观后感
2015/06/04 职场文书
如何Tomcat中使用ipv6地址
2022/05/06 Servers