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与vbscript数据共享
Jan 09 Javascript
在JavaScript中遭遇级联表达式陷阱
Mar 08 Javascript
JavaScript While 循环基础教程
Apr 05 Javascript
jquery 框架使用教程 AJAX篇
Oct 11 Javascript
图标线性回归斜着移动到指定的位置
Aug 16 Javascript
jQuery实现图片放大预览实现原理及代码
Sep 12 Javascript
js导入导出excel(实例代码)
Nov 25 Javascript
jquery选择器使用详解
Apr 08 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 jQuery
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教程 基本语法
2009/10/23 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
php之readdir函数用法实例
2014/11/13 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
python实现数据分析与建模
2019/07/11 Python
python 实现矩阵填充0的例子
2019/11/29 Python
元旦晚会邀请函
2014/01/27 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
小学评语大全
2014/04/22 职场文书
校园环保标语
2014/06/13 职场文书
建筑安全生产责任书
2014/07/22 职场文书
企业消防安全责任书
2014/07/23 职场文书
金融专业求职信
2014/08/05 职场文书
上党课的心得体会
2014/09/02 职场文书
安全生产先进个人总结
2015/02/15 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
python 模块重载的五种方法
2021/04/24 Python
matlab xlabel位置的设置方式
2021/05/21 Python