H5与App使用WebViewJavascriptBridge进行交互

简介: H5与App使用WebViewJavascriptBridge进行交互

JS端操作:

1.引入bridgejs,将和原生交互的方法挂载到全局

// main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// 引入bridgejs
import Bridge from './util/bridge.js'
// 将和native交互的方法挂载到全局
Vue.prototype.$bridge = Bridge
Vue.config.productionTip = false
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')


2.复制并粘贴setupWebViewJavascriptBridge到您的 JS 中:

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 = 'https://__bridge_loaded__';
    document.documentElement.appendChild(WVJBIframe);
    setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
}


3.调用setupWebViewJavascriptBridge然后使用桥来注册处理程序并调用方法:

setupWebViewJavascriptBridge(function(bridge) {
    //注册桥(App调用JS的方法给JS传递数据用这个方法)
    //第一个参数是App调用JS的函数名字,data为接收到来自App的数据,responseCallback是回传数据给App的方法
    bridge.registerHandler('JS Echo', function(data, responseCallback) {
        responseCallback(data)
    })
    //调用app内的方法(JS调用App的方法给App传递数据用这个方法)
    //第一个参数是JS调用App的函数名字,第二个参数是JS传递给App的数据,responseData是App回传给JS的数据
    bridge.callHandler('App Echo', {'key':'value'}, function responseCallback(responseData) {
    })
})


iOS端操作:

1.导入头文件并声明一个变量:

#import "WebViewJavascriptBridge.h"

@property WebViewJavascriptBridge* bridge;


2.使用 WKWebView、UIWebView (iOS) 或 WebView (OSX) 实例化 WebViewJavascriptBridge:

self.bridge = [WebViewJavascriptBridge bridgeForWebView:webView];


3.在 ObjC 中注册一个 handler:(JS调用ObjC的方法给ObjC传递数据用这个方法)

//第一个参数是JS调用App的函数名字,data为JS传递给App的数据,responseCallback为App回传数据给JS的方法
[self.bridge registerHandler:@"ObjC Echo" handler:^(id data, WVJBResponseCallback responseCallback) {
    responseCallback(data);
}];


4.调用一个 JS handler:(ObjC调用JS的方法给JS传递数据用这个方法)

//第一个参数是App调用JS的函数名字,data为App传递给JS的数据,responseData为JS回传给App的数据
[self.bridge callHandler:@"JS Echo" data:nil responseCallback:^(id responseData) {
}];


安卓端操作:

1.Android Studio 导包

repositories {
    // ...
    maven { url "https://jitpack.io" }
}
dependencies {
    compile 'com.github.lzyzsd:jsbridge:1.0.4'
}


2.在布局文件中添加

<com.github.lzyzsd.jsbridge.BridgeWebView
    android:id="@+id/wv_web_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />


3.在 Java 中注册一个 handler:(JS调用Java的方法给Java传递数据用这个方法)

//第一个参数是JS调用App的函数名字,data为JS传递给App的数据,onCallBack为App回传数据给JS的方法
mBridgeWebView.registerHandler("submitFromWeb", new BridgeHandler() {
    @Override
     public void handler(String data, CallBackFunction function) {
     function.onCallBack("指定Handler收到Web发来的数据,回传数据给你");
     }
});


4.调用一个 JS handler:(Java调用JS的方法给JS传递数据用这个方法)

//第一个参数是App调用JS的函数名字,第二个参数是App传递给JS的数据,data为JS回传给App的数据
mBridgeWebView.callHandler("functionInJs","发送数据给web指定接收",new CallBackFunction(){
     @Override
     public void onCallBack(String data) {
     }
});


目录
相关文章
|
16天前
|
XML 移动开发 开发者
京东商品详情数据接口(H5、APP 端)
京东商品详情数据接口是为H5和APP开发者提供的工具,支持获取商品名称、价格、库存、销量、评价、图片等详细信息,优化应用功能。接口返回JSON或XML格式数据,方便解析处理。适用于电商导购、社交媒体分享、活动推广、价格监控等场景,提升用户体验和购物决策效率。示例代码展示了使用Python发送GET请求的方法。
|
13天前
|
移动开发 JSON API
1688 商品详情数据接口(H5、APP 端)
1688商品详情数据接口是1688平台提供的数据交互通道,支持H5和APP端,提供商品的全面信息(如标题、价格、库存、销量等),并实时更新。开发者可通过HTTP/HTTPS协议调用接口,使用GET或POST方法获取数据。示例代码展示了如何用Python请求该接口,需替换API密钥和商品ID。
|
23天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
107 3
|
1月前
|
缓存 移动开发 小程序
uni-vue3-wetrip自创跨三端(H5+小程序+App)酒店预订app系统模板
vue3-uni-wetrip原创基于vite5+vue3+uniapp+pinia2+uni-ui等技术开发的仿去哪儿/携程预约酒店客房app系统。实现首页酒店展示、预订搜索、列表/详情、订单、聊天消息、我的等模块。支持编译H5+小程序+App端。
82 8
|
2月前
|
移动开发 小程序
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
84 3
|
3月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
467 3
|
5月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
135 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
5月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
133 12
|
6月前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
5月前
|
移动开发 前端开发 JavaScript

热门文章

最新文章