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


目录
相关文章
|
1月前
|
移动开发 开发框架 小程序
轻松搭建婚恋交友系统源码,H5/小程序/APP自动适配,智能匹配恋爱交友平台快速落地
婚恋交友系统涵盖在线交友、线下活动、专业服务、社交娱乐等,满足用户多样化需求。系统设计简洁易用,提供实名认证、多注册方式及安全保护,确保用户隐私和数据安全。功能丰富,支持图文展示、筛选匹配、聊天互动、虚拟礼物等,提升互动趣味性。平台可分类管理用户、审核信息、智能推荐,优化用户体验。基于TP6+Uni-app框架,实现跨平台同步,支持二次开发,适应不同市场需求。 [了解更多](https://gitee.com/multi-customer-software/jy)
|
2月前
|
XML 移动开发 开发者
京东商品详情数据接口(H5、APP 端)
京东商品详情数据接口是为H5和APP开发者提供的工具,支持获取商品名称、价格、库存、销量、评价、图片等详细信息,优化应用功能。接口返回JSON或XML格式数据,方便解析处理。适用于电商导购、社交媒体分享、活动推广、价格监控等场景,提升用户体验和购物决策效率。示例代码展示了使用Python发送GET请求的方法。
|
1月前
|
移动开发 JSON API
1688 商品详情数据接口(H5、APP 端)
1688商品详情数据接口是1688平台提供的数据交互通道,支持H5和APP端,提供商品的全面信息(如标题、价格、库存、销量等),并实时更新。开发者可通过HTTP/HTTPS协议调用接口,使用GET或POST方法获取数据。示例代码展示了如何用Python请求该接口,需替换API密钥和商品ID。
|
28天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
26 0
|
2月前
|
缓存 移动开发 小程序
uni-vue3-wetrip自创跨三端(H5+小程序+App)酒店预订app系统模板
vue3-uni-wetrip原创基于vite5+vue3+uniapp+pinia2+uni-ui等技术开发的仿去哪儿/携程预约酒店客房app系统。实现首页酒店展示、预订搜索、列表/详情、订单、聊天消息、我的等模块。支持编译H5+小程序+App端。
100 8
|
3月前
|
移动开发 小程序
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
138 3
|
4月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
562 3
|
6月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
155 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
6月前
|
移动开发 前端开发 JavaScript
|
6月前
|
移动开发 JavaScript 开发工具
微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app
微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    微信小程序 app.json 配置文件解析与应用
  • 4
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
  • 5
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 8
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 10
    阿里云APP备案流程图以及备案所需材料整理,跟着教程一步步操作