zoukankan      html  css  js  c++  java
  • 原生JavaScript与iOS、android app之间数据交互

    Web前端开发与iOS前端开发之间的数据交互,需要借助JavaScript封装的特定的方法来实现两者之间的逻辑业务交互;

    封装函数 setupWebViewJavascriptBridge

    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)
    }
    

    JavaScript与iOS app之间数据交互时,需要借助封装好的 setupWebViewJavascriptBridge方法来实现两端开发之间的逻辑数据交互问题。

    H5触发js点击事件,唤起iOS app中的事件函数

    setupWebViewJavascriptBridge(function (bridge) {
        bridge.callHandler(
                'iOS事件名', 
                {'参数param'}, 
                function responseCallback(responseData) {}
          );
    });
    

    iOS事件名:为iOS开发同事提供的唤起app中响应事件的事件名;
    参数param:传递给iOS app的参数为key-value 键值对类型

    iOS app中触发事件,唤起前端JavaScript封装的方法

    setupWebViewJavascriptBridge(function(bridge) {
        bridge.registerHandler('jsFn', function(json) {
        var param = JSON.parse(json); // 数据类型转换
              jsFn(param);
        });
    });
    

    jsFn:为JavaScript封装的函数方法名;
    :与iOS app交互返回的数据为JSON字符串;需要iOS app传值的时候,则需要先使用JSON.parse(response)转换为JSON对象之后再传值给js封装的事件函数

    JavaScript和Android app之间的数据交互

    // params为传递给Android app的参数值
    window.android.AndroidEventName(params); 
    

    AndroidEventName:为Android app开发提供的事件方法名;
    如果在vue中实现Android app调用JavaScript封装的函数方法,则需要将JavaScript封装的函数名作用域指定到全局作用域,即window下。
    :Android调用JavaScript方法时,与js调用自身封装的方法一致。

  • 相关阅读:
    关于两次指针(struct型)传参数的问题
    git学习基础教程
    程序员恶性循环- 有感
    基于Tomcat 的WEB Project存在的安全漏洞总结
    使用Maven自动部署Java Web项目到Tomcat问题小记
    MyEclipse中Maven的配置
    mybatis处理集合、循环、数组和in查询等语句的使用
    JBOSS的启动和停止
    myeclipse越来越卡了怎么回事啊?
    linux shell 模拟post请求
  • 原文地址:https://www.cnblogs.com/zxk5211/p/13554582.html
Copyright © 2011-2022 走看看