JS与IOS、安卓的交互

时间:2023-02-15 23:29:40

最近做的项目中涉及到了与安卓和ios的交互问题,对于一个新手来说,多多少少会有点迷糊。在调用安卓和ios的callback回调时,很轻松的就调用成功了,而且,步骤也不那么繁琐。刚开始,只知道那样使用可以调用他们封装好的方法,来执行得到想要的效果,但是其中的原理什么的没有过多了了解。但是今天,需要用到前端封装方法传递给ios和安卓,用于调用前端在js中封装的方法。还是一如既往的按照原来的方法直接抛给人家,一个函数名,及告知他们需要传递的参数。就这样,安卓端轻而易举的调用到我封装的方法,而且没有任何问题,但是在IOS上就挂了,就是调用不到。回过头来,仔细缕了一下自己代码,没有问题,最后才发现没有使用固定的方法传递给ISO。

  • 调用安卓的方法回调
 window.android.ZZZXK()

  其中  ZZZXK()   为与安卓开发人员协商好的方法名。

  安卓调用前端封装的js函数的方法: 直接将前端在js中封装的函数名以及需要传递的参数告知安卓开发就OK了!

****** JS调用IOS之前需要做的准备工作:

function setupWebViewJavascriptBridge(callback) {
    if (window.WebViewJavascriptBridge) {
        return callback(WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
        return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    var WVJBIframe = document.createElement('iframe');
    WVJBIframe.style.display = 'none';
    WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
    document.documentElement.appendChild(WVJBIframe);
    setTimeout(function () {
        document.documentElement.removeChild(WVJBIframe)
    }, 0)
}

  与IOS端进行交互时,复制粘贴该段代码,到你的JS中,全局都调用!

****** JS调用IOS传递的方法:

setupWebViewJavascriptBridge(function (bridge) {
  bridge.callHandler('ZZZZZZZZZZZZZZZZZ', {key:value}, function responseCallback(responseData) {    //。。。  });
});/*** ZZZZZZZZZZZ 为IOS端传递过来的函数名* 其中第一个中括号中的键值对,为传递过来的参数* 最后的函数为回调函数,以便于请求成功之后的函数的处理*/ 

****** JS给ISO传递自己封装的函数的方法:

setupWebViewJavascriptBridge(function (bridge) {
    bridge.registerHandler('XXXXXXX', function (data) {
      var obj = JSON.parse(data);
       ZZZZZZZ(obj.can1, obj.can2);
    });});    // XXXXXXXX:为前端JS要传递给IOS的封装的函数的名字//  function中的data参数为IOS端调用成功之后的回调,其中data为返回的结果。//  若 XXXXXXX 函数中需要传递参数,则在data对象中获取,(依据IOS端传递的方式进行相应的处理,我这边是传递的JSON字符串类型,所以就对返回的结果:data做了数据转换处理)//  ZZZZZZZZZ():为JS本地需要执行的函数,若需要参数的情况下,可以解析obj中获取到的参数,进行赋值调用

JS与IOS、安卓的交互的更多相关文章

  1. JS识别ios & 安卓

    var isAndroid = navigator.userAgent.indexOf('Android') > -1 || navigator.userAgent.indexOf('Adr') ...

  2. js 与 ios Android交互

    一.android 交互 1.js调用webview 在android API Level 17及以上的版本中,就会出现js调用不了android的代码,这是版本兼容的问题,需要在调用的方法上面加一个 ...

  3. 让微信内置浏览器兼容clipboard.js 复制粘贴 ios 安卓

    <!--js copy事件--><script type="text/javascript" src="/static/js/clipboard.min ...

  4. Ios开发之 -- js和ios的交互

    ==WebViewJavascriptBridge的介绍== #下载:https://github.com/marcuswestin/WebViewJavascriptBridge #关于WebVie ...

  5. WebViewJavascriptBridge详细使用 iOS与H5交互的方案

    WebViewJavascriptBridge详细使用 源网址: https://www.cnblogs.com/jiang-xiao-yan/p/5345755.html    前言 WebView ...

  6. js&lpar;javascript&rpar;与OC&lpar;Objective-C&rpar;交互

    实质上oc与js的通信交互就是发送消息,也即函数调用,iOS7以后官方公布JavaScriptCore framework中很方便我们对他们之间的相互调用.在以前我们只能通过UIWebView的UIW ...

  7. Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)

    在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...

  8. 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

    简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...

  9. iOS&comma;html使用交互相关

    1.UIWebView加载Html文件 2.UIWebView的委托方法 3.UIWebView和JS交互 4.使用Safari,WebView调试html 5.使用WKWebView加载Html,和 ...

随机推荐

  1. Sql server2012还原备份文件语句

    --sql2012还原sql2008语句 --选择master数据库,新建查询 输入下面sql语句 --选择兼容模式(sql 2008)创建数据库db(还原时db写成原生数据库名称) RESTORE ...

  2. Balanced Binary Tree &lbrack;LeetCode&rsqb;

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  3. nodejs中全局变量

    1.global 类似于客户端javascript运行环境中的window module1.js: module.exports={}; //耻辱的使用了全局变量 global.varA = &quo ...

  4. Sqoop&lowbar; 从 hive 导到mysql常遇九问题总结&lpar;转&rpar;

    以前以为版本不同,遇到的问题就不同,后来发现,无论是新版本,还是老版本,遇到的问题大部分都是相同的.下面解决问题的方法仅供借鉴 1.拒绝连接的错误表现是什么?2.表不存在该如何解决?3.null字段填 ...

  5. php 登录实例演示

    <pre name="code" class="python">一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主 ...

  6. javascript基础-事件1

    原理 事件分两种.第一种浏览器事件,由浏览器抛出事件,它是人机交互的基础:第二种自定义事件,由程序员抛出事件,它是模拟事件流程.两者都是为了完成数据的传递. 浏览器事件 机制 冒泡和捕获两种机制.因I ...

  7. Window window &equals; Window&period;GetWindow&lpar;控件&rpar;

    Window window = Window.GetWindow(控件)

  8. 多进程IPC与Python支持

    多进程IPC与Python支持 linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因 ...

  9. Python开发【第一篇】基础题目二

    1 列表题 l1 = [11, 22, 33] l2 = [22, 33, 44] # a. 获取l1 中有,l2中没有的元素 for i in l1: if i not in l2: # b. 获取 ...

  10. 最大流当前弧优化Dinic分层模板

    最大流模板: 普通最大流 无向图限制:将无向图的边拆成2条方向相反的有向边 顶点有流量限制:拆成2个点,连接一条容量为点容量限制的边 无源汇点有最小流限制的最大流:理解为水管流量形成循环 有源汇点的最 ...