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调用自身封装的方法一致。

  • 相关阅读:
    IOS客户端Coding项目记录(二)
    IOS客户端Coding项目记录(一)
    IOS开发基础知识--碎片7
    图解域域树域林根域的含义
    Windows server 2012公用网络修改为专用网络
    Windows2012R2版本区别
    VMWare:vSphere6 企业版参考序列号
    Oracle快速测试连接是否成功
    Brocade300 commands
    也谈免拆机破解中兴B860av1.1(解决不能安装软件/解决遥控)
  • 原文地址:https://www.cnblogs.com/zxk5211/p/13554582.html
Copyright © 2011-2022 走看看