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 相关文章推荐
JavaScript中的对象化编程
Jan 16 Javascript
设置下载不需要倒计时cookie(倒计时代码)
Nov 19 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
jquery form 加载数据示例
Apr 21 Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 Javascript
jquery中$each()方法的使用指南
Apr 30 Javascript
jquery实现无刷新验证码的简单实例
May 19 Javascript
Angular ng-class详解及实例代码
Sep 19 Javascript
javascript函数中的3个高级技巧
Sep 22 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
Jan 31 Javascript
微信小程序图片右边加两行文字的代码
Apr 23 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
php模拟js函数unescape的函数代码
2012/10/20 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
初探nodeJS
2017/01/24 NodeJs
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
Python shutil模块用法实例分析
2019/10/02 Python
python实现tail -f 功能
2020/01/17 Python
Python 如何查找特定类型文件
2020/08/17 Python
台湾良兴购物网:EcLife
2019/12/01 全球购物
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
大学本科毕业生的自我鉴定
2013/11/26 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
小学生春游活动方案
2014/08/20 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
详解Python中的进程和线程
2021/06/23 Python
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA