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中的几个关键概念的理解-原型链的构建
May 12 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
JavaScript学习笔记整理_关于表达式和语句
Sep 19 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
JS基于贪心算法解决背包问题示例
Nov 27 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
Dec 15 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
Nov 30 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
详解vue 命名视图
Aug 14 Javascript
layer实现弹出层自动调节位置
Sep 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
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
Python实现获取网站PR及百度权重
2015/01/21 Python
python中循环语句while用法实例
2015/05/16 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python的unittest测试类代码实例
2017/12/07 Python
python图像处理入门(一)
2019/04/04 Python
python中时间模块的基本使用教程
2019/05/14 Python
如何基于python生成list的所有的子集
2019/11/11 Python
python实现图片横向和纵向拼接
2020/03/05 Python
写好自荐信的技巧
2013/11/08 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
建议书怎么写
2014/03/12 职场文书
明信片寄语大全
2014/04/08 职场文书
热情服务标语
2014/10/07 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书