uniapp:3分钟搞定在线推送uni.createPushMessage,uni.onPushMessage

news2024/9/29 17:57:48

安卓端 在线推送功能演示:

1、dcloud后台申请开通uniPush

dcloud后台

(1):找到我的应用
在这里插入图片描述
(2):点进去后,各平台信息,点击新增
在这里插入图片描述
(3):填写包名,签名等信息
在这里插入图片描述
包名:就是你原生APP-云打包 时的Android包名
SHA1和SHA256:参考我的另一篇文章,详细介绍了如何生成证书,和获取证书信息链接地址
MD5:上一篇文章中使用JDK获取到SHA1和SHA256,获取不到MD5,找找资料发现说是因为JDK版本过高,降低版本后也无法解决这个问题,后来从官网了解到,获取安装包的签名,每2位中间间隔一个冒号就是md5。
所以这里参考另一篇文章,如何获取APP签名
这里需要注意:你的APP必须安装到手机中之后,在使用这个工具,才能获取到签名
在这里插入图片描述
获取到的签名每2位字母中间间隔一个 :就可以了。
(4):选择uniPush2.0,选择对应的项目,平台选择安卓,Android包名就是上一步填写的包名信息,会自动生成到下边2个框内
在这里插入图片描述
(5):添加云服务空间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试阶段,我们就选免费试用一个月。并确认开通。(完成后需要等待10分钟左右)10分钟后,返回(4)关联云空间,并开通应用。
(6):以上内容全部完成后,消息推送 即可手动推送消息。
在这里插入图片描述
写到这里 uniPush 的申请开通教程已完成

2、配置manifest.json

该项目仅供测试,所以没有做离线推送(离线推送牵扯到应用上架等内容。等以后做这块内容的再来更新)
在这里插入图片描述

3、app.vue

(1):首先要保证我们用到的通知管理权限要开启。permission.js

import permision from "@/js_sdk/wa-permission/permission.js"
export default {
	onLaunch: function() {
		var main = plus.android.runtimeMainActivity();
			var pkName = main.getPackageName();
			var uid = main.getApplicationInfo().plusGetAttribute("uid");
			var NotificationManagerCompat = plus.android.importClass(
				"android.support.v4.app.NotificationManagerCompat"
			);
			//android.support.v4升级为androidx
			if (NotificationManagerCompat == null) {
				NotificationManagerCompat = plus.android.importClass(
					"androidx.core.app.NotificationManagerCompat"
				);
			}
			var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
			// 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置
			if (!areNotificationsEnabled) {
				console.log('请开启权限:通知管理-允许通知')
				uni.showModal({
					title: '权限提示',
					content: '请前往 通知管理 开启权限',
					confirmColor: '#7287EA',
					success: function(res) {
						if (res.confirm) {
							permision.gotoAppPermissionSetting() // 跳转到APP设置,用户手动开启通知权限
						} else if (res.cancel) {
							console.log('用户点击取消');
						}
					}
				});
			}
	}
}

(2):开始创建通知栏uni.createPushMessage
为了能够及时收到用户发来的消息,所以需要在主进程中写一个轮询,查到有新消息就创建系统通知栏

setInterval(() => {
	let session_id = uni.getStorageSync('session_id') ? uni.getStorageSync('session_id') : '';
	// console.log(session_id)
	this.$http.post("/api/Chat/msgNotify", {
		id: session_id,
	}).then(res => {
		if (res.code == 1) {
			if(session_id == data.session_id){
				// 这里为什么要判断:因为当A--B进行会话,我肯定不希望B发送的消息也创建系统通知栏,
				// 进入会话页面要向本地存储session_id,离开会话页面就清除本地的session_id
				// 所以要判断,如果当前的会话id == 接口返回的会话id 则不提醒。
				return
		}else{
				uni.createPushMessage({
					icon:require('./static/logo58.png'),
					title:title,
					content:content,
					payload:{
						// 这里地方你可以随意组合你想要的数据,uni.onPushMessage会监听到你组合的数据。
						session_id:res.data.session_id,
						page:'/pages/index/index?id='+res.data.session_id
					},
					success:(res=>{
						console.log('成功创建')
					}),
				})
			}
		}
	})
}, 4000);

(3):监听通知栏被点击,当通知栏被点击后会打开APP,可以拿到上一步自己组合的数据,进行一些操作

uni.onPushMessage((res) => {
	uni.removeStorageSync('session_id');
	let url = res.data.payload.page;
	console.log('监听推送消息-----' + res)
	setTimeout(() => {
		this.$goBack(2, url)//OK=== 跳转到聊天页面
	}, 1000)
})

以上内容已完成。有什么不理解欢迎给我留言-.-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web前端学习:五 - 练习

四二-四八&#xff1a;baidu糯米 44-48 1、写法1 &#xff08;1&#xff09;a.movie1 .Navigation .recommend .listbanner a.movie1{background: url(img/h_1.jpg) no-repeat 63px 9px;}表示a标签且class为movie1的元素 如&#xff1a; <a href"#" class&quo…

智能家居项目(七)之Libcurl库与HTTPS协议实现人脸识别

目录 一、前言 二、编译openssl支持libcurl的https访问 三、编写人脸识别代码 四、编程实现人脸识别第二次加入图片base64编码 五、总结 一、前言 上一篇文章我们调用libcurl库去访问了百度&#xff0c;访问的是http协议的百度云主页。那么现在我们要基于翔云人工智能平台…

计算机大小端

我们先假定内存结构为上下型的&#xff0c;上代表内存高地址&#xff0c;下代表内存低地址。 电脑读取内存数据时&#xff0c;是从低位地址到高位地址进行读取&#xff08;从下到上&#xff09;。 1、何为大小端 大端&#xff1a;数据的高位字节存放在低地址&#xff0c;数据…

数据库增删改查II

目录 1.约束 1.1null约束 1.2唯一约束 1.3默认值约束 1.4主键约束 1.5外键约束 2.新增 3.查询 3.1聚合查询 3.1.1.聚合函数 3.1.2group by子句 3.1.3 having 3.2联合查询 3.2.1内连接 3.2.2外连接 3.2.3 自连接 3.2.4子查询 3.2.5合并查询 1.约束 1.1null约…

两个适配器网络冲突,限制访问特定网址

两个适配器网络冲突&#xff0c;限制访问特定网址说明命令说明说明 因为工作需要&#xff0c;有线网络访问局域网服务器&#xff0c;限制特别策略访问&#xff0c;如禁止远程。此时如果想要远程&#xff0c;在连接手机热点就可以&#xff0c;但由于两个网络的存在优先级。就出…

五分钟学会接口自动化测试框架

今天&#xff0c;我们来聊聊接口自动化测试是什么&#xff1f;如何开始&#xff1f;接口自动化测试框架怎么做&#xff1f; 自动化测试 自动化测试&#xff0c;这几年行业内的热词&#xff0c;也是测试人员进阶的必备技能&#xff0c;更是软件测试未来发展的趋势。 特别是在…

怎么从零搭建vue项目(使用webpack手动搭建)

目录一、前提条件二、手动搭建vue项目的步骤&#xff1a;1. 创建项目2. 生成package.json文件3. 引入webpack和创建webpack.config.js文件4. 创建index.html&#xff0c;main.js文件5. 使用webpack命令编译6. 引入vue2&#xff0c;修改index.html&#xff0c;main.js文件7. 引入…

物理机不能访问虚拟机kali的web服务解决方案记录

目录 环境 问题描述 解决方案 知识补充 效果测试 其他思路 环境 kali&#xff08;nat模式&#xff09;&#xff0c;物理机&#xff0c;可互ping 问题描述 kali的web服务器不能在物理机上访问。 1.本机能ping通虚拟机 2.虚拟机也能ping通本机 3.虚拟机能访问自己的web …

Python基础知识——列表

列表 列表是可以存放任何数据&#xff0c;包括整型&#xff0c;浮点型&#xff0c;字符串&#xff0c;布尔型等等&#xff0c;是常用的数据类型之一。 1.列表的创建 列表也是一个可迭代对象 1. 普通形式l [1,2,3,4,5] ---整型列表l ["a","b","c&…

一篇搞懂tcp,http,socket,socket连接池之间的关系

前言 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼&#xff0c;然而它们之间的关系、区别及原理并不是所有人都能理解清楚&#xff0c;这篇文章就从网络协议基础开始到Socket连接池&#xff0c;一步一步解释他们之…

激光雷达上车「热」背后的焦虑

激光雷达的上车节奏正在加速。 高工智能汽车研究院监测数据显示&#xff0c;从2022年9月至今&#xff0c;中国市场乘用车月度前装标配搭载激光雷达一直保持在1.5万台以上&#xff0c;其中&#xff0c;去年12月更是单月冲破3万台大关。 本周&#xff0c;Luminar宣布扩大与梅赛德…

实现小说自由,国产浏览器出手了,吊打各类阅读软件

喜欢看小说的朋友都知道&#xff0c;有时候看小说看到一定的章节就要收费了&#xff0c;那我们怎么实现小说阅读自由&#xff0c;免费看完整部小说呢&#xff1f;下面给大家分享可以免费看小说的良心浏览器&#xff0c;吊打各类阅读软件&#xff0c;真的是巨好用。无论是古代穿…

【读论文】THFuse

【读论文】THFuse介绍网络架构多分支CNN特征提取块基于VIT的全局特征提取快图像重建块损失函数总结参考论文&#xff1a; https://www.sciencedirect.com/science/article/abs/pii/S0925231223000437如有侵权请联系博主介绍 一篇基于CNN和VIT的关于红外可视图像融合的论文&…

【wpf】ItemsControl 的Binding 小技巧

ItemsControl 非常常用和好用的控件&#xff0c;我经常将之用于配置界面&#xff01; 比如这么一个配置界面&#xff1a; 整体是一个ItemsControl&#xff0c;每个子界面就是其中的一个Item。 ItemsControl 的 ItemsSource 绑定到 ParameterInfo 的集合 public ObservableCo…

最简单的微信多开防撤回方式

微信&#xff0c;大家工作中生活中用的最多的一款应用&#xff1b;很多公司喜欢用微信来作为工作沟通的工具&#xff0c;官方原版只支持登陆一个微信&#xff0c;这对于需要在电脑上登陆多个微信账号的朋友来说肯定是极其的不方便。另外有的时候别人撤回了一些重要消息&#xf…

目前医疗器械数据库有哪些?最推荐哪些?

在英特网发达的今天&#xff0c;医疗器械信息查询应该是一件便捷的事情&#xff0c;但不知道大家有没有遇到过这种类似情况&#xff0c;就是在查询医疗器械信息时&#xff0c;如果通过百度去检索&#xff0c;查到的结果往往会不尽人意&#xff0c;比如信息陈旧、太分散、来源不…

Spring security 个人理解

改文章写的很好&#xff1a;https://zhuanlan.zhihu.com/p/342755411 Spring security 分为两个部分 登陆认证权限认证 登陆认证 其实就是就是登陆注册&#xff0c;然后获取登陆凭证的问题 操作如下 登陆账号密码&#xff0c;通过账号查询出用户数据&#xff0c;然后密码进…

如何使用DeadFinder寻找失效链接

关于DeadFinder DeadFinder是一款功能强大的链接分析工具&#xff0c;该工具可以帮助广大研究人员快速地寻找目标页面中的无效链接&#xff08;死链&#xff09;。所谓死链&#xff0c;即一个页面中存在的无法被连接的一条链接。这些链接如果一直保留在页面中的话&#xff0c;…

Hive中的高阶函数(二)

1、UDTF之explode函数 explode(array)将array列表里的每个元素生成一行&#xff1b; explode(map)将map里的每一对元素作为一行&#xff0c;其中key为一列&#xff0c;value为一列&#xff1b; 一般情况下&#xff0c;explode函数可以直接使用即可&#xff0c;也可以根据需要结…

[python入门(53)] - python中的OS模块(包) - 2

目录 ❤ OS模块和path模块(函数) ❤ os模块中操作目录以及文件的函数 ❤ os模块中遍历目录数 ❤ 一些表现形式参数 ❤ 获取在进程的控制终端上登录的用户的名称&#xff1a; os.getlogin() &#xff08;即此时pc登录的用户名&#xff09; ❤ 总结 ❤ os.listdir()…