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 相关文章推荐
一个页面放2段图片滚动代码出现冲突的问题如何解决
Dec 21 Javascript
jquery 触发a链接点击事件解决方案
May 02 Javascript
深入解析contentWindow, contentDocument
Jul 04 Javascript
node.js超时timeout详解
Nov 26 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
浅谈JavaScript字符串拼接
Jun 25 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 Javascript
React 源码中的依赖注入方法
Nov 07 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 Javascript
微信小程序左滑删除实现代码实例
Sep 16 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新手上路(十四)
2006/10/09 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
YII框架关联查询操作示例
2019/04/29 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
JS实现页面打印功能
2017/03/16 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
python实现用户管理系统
2018/01/10 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
盛大笔试题
2016/11/05 面试题
园林资料员岗位职责
2013/12/30 职场文书
市场开发与营销专业求职信
2013/12/31 职场文书
前台岗位职责范本
2015/04/16 职场文书
举起手来观后感
2015/06/09 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
初三语文教学反思
2016/03/03 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
MongoDB支持的数据类型
2022/04/11 MongoDB
Golang实现可重入锁的示例代码
2022/05/25 Golang