在上一篇博客中已经和大家聊了,关于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用户的使用体验,并且处理函数不会影响到方法的调用。

  好了到这里就和大家聊完了,当然如果所述与您的理解有偏差,还望指点一二。

最新文章

  1. 把int*传值给char*,打印出错误的数字
  2. IntelliJ IDEA 常用设置讲解
  3. iOS--页面跳转(UITableView)
  4. 利用百度语音API进行语音识别。
  5. maven 各种用途
  6. Eclipse JSP/Servlet 环境搭建
  7. CLR VIA C#委托
  8. Why we need model on Django ?
  9. 【个人使用.Net类库】前言
  10. 为什么重写equals方法还要重写hashcode方法?
  11. django接收和发送json数据
  12. oracle 修改dbid和dbname
  13. HDU 2203 亲串(kmp)
  14. eclipse环境下基于已构建struts2项目整合spring+hibernate
  15. Nginx location 正则篇
  16. 自己写的C#三层代码生成器
  17. Java面向对象(二)
  18. gdb windbg and od use
  19. TensorFlow官网无法访问
  20. Kali系列之ettercap欺骗

热门文章

  1. My TWI
  2. zookeeper源码分析之一服务端启动过程
  3. 在Linux系统下运行微信Web开发者工具
  4. PHP与JAVA构造函数的区别
  5. (翻译)FIFO In Hardware
  6. PHP设计模式(二)工厂方法模式(Factory Method For PHP)
  7. 移动BPM解决方案分享
  8. 在Ubuntu下搭建Spark群集
  9. requests源码阅读学习笔记
  10. 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节