news 2026/10/29 19:59:20

H5网页与Uniapp之间通信,通知栏

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
H5网页与Uniapp之间通信,通知栏

目录

1、 H5嵌套网页

1.1、 重要准备

1.2、 引入网页

1.3、 屏蔽ts类型判断

1.4、 参考代码

2、 Uniapp webview 页面(vue 页面)

2.1、webview页面

3、 其它配置

3.1、uniapp

3.2、H5项目

  1. H5嵌套网页
    1. 重要准备

H5 页面需要引入 uni 的 js,或者自己下载对应js文件,文档附完整下载uni.webview.1.5.6.js:

<script src="https://cdn.jsdelivr.net/npm/uni-app@2.0.0/dist/uni.webview.1.5.6.js"></script>

    1. 引入网页

将下载的uni.webview.1.5.6.js引入网页,文件优先放置在public下,或者可放置在assets,参考如下图:

    1. 屏蔽ts类型判断

vue项目,屏蔽ts类型判断,uni-webview.d.ts具体内容如下:

declare var uni: {

postMessage: (opt: { data: any }) => void

webView: {

getEnv: (cb: (res: any) => void) => void

}

}

// 全局事件

interface DocumentEventMap {

UniAppJSBridgeReady: Event

}

    1. 参考代码

具体测试页面参考如下:

具体测试代码如下:

<template>

<div class="container"

style="display: flex; height: 100vh; justify-content: center; align-items: center;flex-direction: column;">

<button @click="tests">测试1、点击按钮通知</button>

<br>

<div> 测试2,进入页面自动通知</div>

</div>

</template>

<script setup lang="ts">

import { onMounted, ref } from 'vue'

//=============点击按钮测试通知栏=========================================================================

// 点击测试

const tests = () => {

sendUniMsg('测试通知', '通知内容Test,这是一段测试通知!!!。')

}

const bridgeReady = ref(false)

// 发送消息函数

const sendUniMsg = (title: string, content: string) => {

if (!bridgeReady.value) {

// console.warn('bridge 还没准备好!')

return

}

//安卓、苹果实时发送通知,区别在webView

if (uni?.webView && typeof (uni.webView as any).postMessage === 'function') {

(uni.webView as any).postMessage({

data: {

title,

content

}

})

}

// uni.webView.postMessage({

// data: {

// title,

// content

// }

// })

// uni.postMessage({

// data: {

// title,

// content

// }

// })

}

onMounted(() => {

// 只监听一次

const readyHandler = () => {

// console.log('bridge就绪,可以调用uni.postMessage')

bridgeReady.value = true

}

document.addEventListener('UniAppJSBridgeReady', readyHandler, { once: true })

// 【重要兼容】如果脚本加载比vue快,事件已经触发完了,直接判断

// 可以用 uni.webView.getEnv 探测是否在uni webview环境

if (typeof uni !== 'undefined' && uni?.webView) {

uni.webView.getEnv((res: any) => {

// res.plus === true 代表在uni-app webview中

if (res.plus) {

bridgeReady.value = true

// console.log('在uni webview环境')

}

})

}

//这里是进入页面默认测试通知

// document.addEventListener('UniAppJSBridgeReady', () => {

// console.log('bridge就绪,可以调用uni.postMessage')

// uni.postMessage({

// data: {

// title: '通知标题222222222',

// content: '通知内容2222222222'

// }

// })

// })

})

//==============================================================================================

</script>

<style scoped></style>

  1. Uniappwebview 页面(vue 页面)

2.1、webview页面

全部代码如下:

代码:

<template>

<web-view :src="h5Url" @message="handlePostMessage" />

</template>

<script>

export default {

data() {

return {

h5Url: "http://183.207.187.82:18007/testapp/#/",

}

},

methods: {

handlePostMessage(e) {

console.log('外层收到H5消息,原始:', e.detail.data)

const msg = e.detail.data?.[0] || {}

const title = msg.title || '系统通知'

const content = msg.content || '您有一条新消息'

console.log(title);

// #ifdef APP-PLUS

try {

uni.createPushMessage({

title: title,

content: content,

sound: "system",

// channelId: "msg-channel",安卓专属,可能会导致无法显示通知,非必要,可注释

cover: false,

payload: msg,

success(res) {

console.log(' 创建通知成功', res)

},

fail(err) {

console.error(' 创建通知失败', err)

}

})

} catch (ex) {

console.error('通知异常:', ex)

}

// #endif

}

}

}

</script>

  1. 其它配置

(本地测试可能不需要设置也能达到效果,如果需要端对端通知,必须勾选,并且需要配合数据库,接口使用。如用户a,推送通知到指定用户或者用户群,一定需要!!!)

3.1、uniapp

H5 这边只做业务,消息由后端推 uniPush2.0,uni-app 原生监听推送,收到后展示通知栏,不走 webview 消息通道。

开启推送参考图如下:

3.2、H5项目

打包后,需要注意项目引入文件路径格式,打包后默认不是./,部署需要注意:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 19:58:13

信息化技术架构规划方案PPT:四层架构+演进路径+投资估算实战拆解

简介&#xff1a;一套面向企业信息化管理者与信息技术架构规划人员的解决方案汇报案例&#xff0c;聚焦数字化转型中的技术架构规划与落地路径。内容围绕架构规划、云管理、信息安全体系建设三大主线&#xff0c;涵盖总体思路、云化资源池、多云统一管理、应用迁移上云、容灾与…

作者头像 李华
网站建设 2026/10/29 19:55:58

SSM高校普法系统源码实战:环境搭建、避坑与二次开发指南

简介&#xff1a;这是一套面向高校计算机相关专业学生与Java初学者、可用于毕业设计或课程设计的高校普法系统完整源码&#xff0c;采用SSM&#xff08;SpringSpringMVCMyBatis&#xff09;架构&#xff0c;前后端分离实现&#xff0c;配套MySQL数据库、说明文档与LW论文&#…

作者头像 李华
网站建设 2026/10/29 19:55:13

Python+OpenCV本地运行识别图片中文件

环境搭建 pip install opencv-python numpy目录结构 chkimg.py models/ ├── efficientdet_d2/ # EfficientDet-D2 模型文件 │ ├── saved_model.pb # 模型文件 │ ├── variables/ # 模型变量 │ └── assets/ # 模型…

作者头像 李华
网站建设 2026/10/29 19:50:24

从U盘到根补丁:OpenCore Legacy Patcher 3阶段让老Mac装上最新macOS

从U盘到根补丁&#xff1a;OpenCore Legacy Patcher 3阶段让老Mac装上最新macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 那台被系统更新抛下的老 Mac&…

作者头像 李华