UDN-企业互联网技术人气社区

板块导航

浏览  : 779
回复  : 2

[原生js] JS调用Android、Ios原生控件

[复制链接]
独领风骚的头像 楼主
发表于 2017-2-4 10:41:23 | 显示全部楼层 |阅读模式
  今天我们一起聊一下JS调用Android、Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时,提高代码质量,实现两者在网页端代码的统一。

  首先我们先看一下 Ios调用JS 的方法实现:
  1. //无参调用
  2. function SwiftCallJs1(){}
  3. //有参调用
  4. function SwiftCallJs2(name, message){}
复制代码

  紧接着我们看一下 Android调用JS 的方法实现:
  1. //无参调用
  2. function AndroidCallJs1(){}
  3. //有参调用
  4. function AndroidCallJs2(data){}
复制代码

  从上面的代码中你是否发现,Android与Ios调用JS时,JS处理函数两者在无参调用时是相通的。有参调用不同点是Ios是一对一直接传递,Android则是字符串传递,当然我们可以通过在Android和Ios端统一传参使用JSON格式,JS支持JSON解析,从而实现两个平台在有参方法调用上的统一。

  看完上面的Ios与Android调用JS,下面我们看一下JS调用Android与Ios原生通信的异同点。

  首先我们看一下 JS调用Android 的方法实现:
  1. //无参调用
  2. function callNull(){
  3.       android.CallNull();  
  4. }
  5. //有参调用
  6. function callMessage(){
  7.       android.CallMessage("msg");
  8. }
  9. //有参调用--json
  10. function callJson(){
  11.       var json = "[{\"name\":\"满艺网\",\"url\":\"www.manyiaby.com\"}]";
  12.       android.CallJson(json);
  13. }  
复制代码

  接下来我们看一下JS调用Ios的方法实现:
  1. //一:无前缀调用
  2. //无参调用
  3. function test1(){
  4.       Test1();
  5. }
  6. //有参调用
  7. function test2(){
  8.       Test2("满艺网","www.manyiaby.com");
  9. }
  10. //二:有前缀调用
  11. //无参调用--带返回操作结果处理
  12. function callSystem(){
  13.       Ios.CallSystem();
  14. }
  15. //操作结果处理函数
  16. function JSCallNullIosResult(){}

  17. //有参调用
  18. function callWithMsg(){
  19.       Ios.CallWithMsg("满艺网","www.manyiaby.com");
  20. }
  21. //有参调用--json
  22. function callWithJson(){
  23.      var json = "{\"name\":\"满艺网\",\"url\":\"www.manyiaby.com\"}";
  24.      Ios.CallWithJson(json);
  25. }
  26. //有参调用--带返回结果处理
  27. function callWithJsonResult(){
  28.         var json = "{\"name\":\"满艺网\",\"url\":\"www.manyiaby.com\"}";
  29.      Ios.CallWithJsonResult(json);
  30. }
  31. function JSCallJsonIosResult(data){
  32.       alert("name:"+data["name"]);  
  33. }
复制代码

  看到这里你一定发现了不同点,1、Android没有不带前缀的方法调用,2、Android没有方法调用后的操作结果返回处理逻辑。对于第一点,就目前我所认识到的是原生没有通过具体的实现逻辑,不过这个点不影响我们的开发,因为Ios是支持前缀方法调用的。对于第二点,我的理解是对于返回处理函数,我们可以在开发的添加上去,从而提高Ios用户的使用体验,并且处理函数不会影响到方法的调用。

相关帖子

发表于 2017-2-4 10:41:54 | 显示全部楼层
占坑编辑ing
使用道具 举报

回复

发表于 2017-2-4 20:33:14 | 显示全部楼层
LZ是闲人,天天发帖,坚定完毕
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部