vue与原生app的对接交互的方法(混合开发)

yizhihongxing

对于vue项目想要和原生app进行对接交互的方法,可以采用混合开发的方式。下面是一些实现的方式和示例说明:

方式一:使用WebViewJavascriptBridge

  1. 引入WebViewJavascriptBridge

在vue项目中引入WebViewJavascriptBridge.js,可以直接在head标签中引入以下代码:

<script src="https://cdn.bootcss.com/WebViewJavascriptBridge/6.0.0/WebViewJavascriptBridge.min.js"></script>
  1. 创建一个WebViewJavascriptBridge实例

在vue项目中需要和原生app进行交互的组件中,可以创建一个WebViewJavascriptBridge对象:

mounted(){
    var that = this
    if (window.WebViewJavascriptBridge) {
      that.bridge = window.WebViewJavascriptBridge
      that.connectWebViewJavascriptBridge(that.bridge)
    } else {
      document.addEventListener('WebViewJavascriptBridgeReady', function () {
        that.bridge = window.WebViewJavascriptBridge
        that.connectWebViewJavascriptBridge(that.bridge)
      },
      false)
    }
},
connectWebViewJavascriptBridge(bridge) {
    bridge.init(function (message, responseCallback) {})
},
  1. 给原生app发送消息

在vue项目中,如果需要给原生app发送消息,可以通过调用jsBridge的send方法来实现:

this.bridge.send(data, function (responseData) {
    //回调函数
});
  1. 接收原生app发送的消息

在vue项目中,如果需要接收原生app发送的消息,可以通过jsBridge的registerHandler方法注册一个名为“jsToH5”的handler,并定义一个用于接收数据的回调方法:

this.bridge.registerHandler("jsToH5", function(data, responseCallback) {
    responseCallback('Response message from js.');
});
  1. 在原生app中调用jsBridge的方法

在原生app中,如果需要调用vue项目中的方法,可以通过jsBridge的callHandler方法来实现,如下所示:

//调用jsBridge的方法
[webViewBridge callHandler:@"handleNativeAction" data:data responseCallback:^(id response) {
//在这里处理收到的消息
}];

例如,可以将原生app中的点击事件通过jsBridge传递到vue项目中,实现以下代码:

webViewBridge.registerHandler('handleWebAction', function(data, responseCallback) {
    if (data.action == 'clickbutton') {
        bridge.send("Button Clicked", function (responseData) {});
    }
});

方式二:使用JavaScriptCore

在vue项目中,可以通过使用JavaScriptCore来实现与原生app的对接交互,具体实现流程如下:

  1. 引入JavaScriptCore

在vue项目中引入JavaScriptCore.js,可以直接在head标签中引入以下代码:

<script src="https://cdn.bootcss.com/JavaScriptCore/4.0.0/JavaScriptCore.min.js"></script>
  1. 注册被原生调用的方法

在vue项目中,需要注册一个被原生调用的方法,并定义一个回调方法来接收原生app发送的消息:

window.webkit.messageHandlers.jsToH5.postMessage({
    msgType: "registerHandler",
    handlerName: "h5Func"
});
window.h5Func = function (data) {
    //处理数据的回调方法
};
  1. 在原生app中调用方法

在原生app中,可以通过调用JavaScriptCore的evaluate方法,将调用请求传递到vue项目中的方法:

JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
NSString *funcToCall = [NSString stringWithFormat:@"window.h5Func('%@')", data];
[context evaluateScript:funcToCall];

例如,可以将原生app中的按钮点击事件通过JavaScriptCore传递到vue项目中,实现以下代码:

[webViewBridge registerHandler:@"handleWebAction" handler:^(id data, WVJBResponseCallback responseCallback) {
    if (data) {
        context[@"h5Func"] = ^(){
        [self.webViewBridge callHandler:@"jsToH5" data:data];
    };
}]

通过以上的两种方式,可以实现vue项目和原生app的对接交互,按照实际需求选择合适的方式实现即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue与原生app的对接交互的方法(混合开发) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue引入子组件命名不规范错误的解决方案

    下面是关于“Vue引入子组件命名不规范错误的解决方案”的完整攻略。 问题描述 在Vue开发中,我们经常需要编写组件和引入子组件。然而,在引入子组件时,有时候我们可能会犯一些快捷而不规范的错误。例如,我们在模板中引入组件时,可能会写成类似下面这样的语句: <mySubComponent></mySubComponent> 这样的语句看起…

    Vue 2023年5月27日
    00
  • vue.js异步上传文件前后端实现代码

    下面我会详细地讲解“Vue.js异步上传文件前后端实现代码”的完整攻略。 准备工作 在正式开始编写代码之前,我们需要进行一些准备工作: 确认后端服务器是否支持文件上传,并且上传的文件大小是否有限制。 安装Vue.js插件vue-file-upload,它提供了非常方便的上传文件功能。 前端实现 添加上传组件 首先,我们需要在页面中添加上传组件。可以使用vue…

    Vue 2023年5月28日
    00
  • php技术实现加载字体并保存成图片

    如何使用PHP技术加载字体并保存成图片,我们可以使用PHP GD库。 首先,在PHP中,我们需要使用imagecreate函数创建一个新的图像对象。创建成功后,我们可以在图像对象上使用一系列绘图函数在图像中创建各种元素。其中一项功能就是加载字体。使用GD库提供的方法,我们可以加载所需字体文件并在图像上将文字绘制出来。 下面是一个简单的示例代码: <?p…

    Vue 2023年5月28日
    00
  • VUE实现表单元素双向绑定(总结)

    “VUE实现表单元素双向绑定(总结)”是一篇VUE相关的实战教程,主要介绍如何利用VUE框架实现表单元素双向绑定的功能,以下是该教程的完整攻略: 首先读者需要先了解VUE的数据绑定原理,以及掌握VUE的基础知识,包括VUE模板、指令、表达式等内容。 在实现表单元素双向绑定的过程中,需要使用VUE的v-model指令,该指令实现了表单元素和数据模型之间的双向绑…

    Vue 2023年5月27日
    00
  • 详解vue-property-decorator使用手册

    详解vue-property-decorator使用手册 简介 vue-property-decorator是Vue.js的一个装饰器库,可以简化在Vue组件中使用的代码。它提供了许多便捷的装饰器,可以为组件的class、props、data、computed、methods以及生命周期钩子等添加修饰符。 使用 安装 你可以使用npm或yarn命令进行安装,…

    Vue 2023年5月27日
    00
  • vue3+vite项目跨域配置踩坑实战篇

    针对“vue3+vite项目跨域配置踩坑实战篇”的完整攻略,我来进行详细讲解。 1. 什么是跨域问题? 在浏览器中,由于同源策略(Same-origin policy)的限制,不同域名、不同端口、不同协议的网页不能直接进行网络通信。跨域问题(Cross-Origin Resource Sharing,CORS)就是指在同一域名下,资源无法正常请求的问题。 2…

    Vue 2023年5月28日
    00
  • 解析Vue.use()是干什么的

    Vue.use()是Vue提供的一个插件安装方法,它的作用是用来注册全局Vue.js插件。我们可以使用该方法将自己编写的插件安装到Vue中,以便在全局中使用。 下面是Vue.use()的语法: Vue.use(plugin) 其中,plugin为一个对象或函数,它必须包含一个install方法,install方法在插件安装时会被调用。此外,它还可以包含其他的…

    Vue 2023年5月28日
    00
  • Vue3响应式对象是如何实现的(1)

    当我们使用Vue3来开发应用程序时,我们可能会频繁地使用响应式对象。那么,Vue3响应式对象是如何实现的呢? 在Vue3中,响应式对象是通过使用Proxy对象来实现的。Proxy是ES6的一个新特性,可以用来拦截JavaScript对象的操作。通过使用Proxy对象,我们可以实现Vue3的响应式对象功能。 下面,让我们通过两个示例来详细讲解Vue3响应式对象…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部