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 相关文章推荐
拉动滚动条加载数据的jquery代码
May 03 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
chrome调试javascript详解
Oct 21 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
使用jQuery实现简单的tab框实例
Aug 22 jQuery
javascript按钮禁用和启用的效果实例代码
Oct 29 Javascript
Vue项目全局配置微信分享思路详解
May 04 Javascript
vue指令做滚动加载和监听等
May 26 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 Javascript
基于JS实现快速读取TXT文件
Aug 25 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实现Ftp用户的在线管理的代码
2007/03/06 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
python的继承知识点总结
2018/12/10 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
如何清空python的变量
2020/07/05 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
Java程序开发中如何应用线程
2016/03/03 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
优秀小学生家长评语
2014/01/30 职场文书
地球一小时活动总结
2015/02/27 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle