一、登录 Dcloud开发者中心 

1.开通uni-push服务

2.厂商推送设置

二、mainfest.json里选择需要的推送模块

三、打包自定义基座

1.发行->App-Android/iOS-云打包

Android

iOS

四、创建云函数

1.创建

2.进入uniCloud服务空间

3.新建服务空间->选择阿里云

4.创建三个数据表

5.项目右键->绑定服务器

6.cloudfunctions右键->新建云函数/云对象

最后点击确定

7.代码

msgPush->index.js



'use strict';
const uniPush = uniCloud.getPushManager({
	appId: "" // 替换为实际appId
})

exports.main = async (event) => {
	const {
		clientId,
		title,
		content,
		payload
	} = event // 通过参数接收推送内容
	console.log('payload', payload);
	return await uniPush.sendMessage({
		"push_clientid": clientId,
		"force_notification": true,
		"title": title,
		"content": content,
		"payload": payload,
		//离线厂商配置
		"options": {
			"HW": {
				"/message/android/target_user_type": process.env.NODE_ENV === 'development' ? 1 : 0
			},
			"XM": {
				"/extra.channel_id": "" // 小米正式channel
			}
		}
	})
}

你创建的云函数右键->上传部署

五、消息处理

app.vue
<script>
	export default {
		onLaunch: function() {
			// 客户端唯一的推送
			// 首次启动应用时获取设备唯一的推送标识(CID)作为后续消息推送的标识符 
            // 客户端通过该标识接收来自服务端的推送消息 支持在线和离线场景
			uni.getPushClientId({
				success: (res) => {
					console.log(res.cid);
				},
				fail(err) {
					console.log(err)
				}
			});
			// 创建并显示一条推送通知 
            // 根据业务逻辑使用 我放在websocket接受到消息时触发
			uni.createPushMessage({
				title: '您有新的消息', // 通知标题
				content: '点击查看详情', // 通知内容
				icon: '/static/logo.png', // 自定义图标(可选)
				sound: 'system', // 使用系统默认提示音(可选)
				cover: false, // 是否覆盖之前同类型通知(可选)
				payload: { // 自定义数据(可选)
					url: '/pages/detail/detail?id=123'
				},
				success: () => {
					console.log('通知发送成功');
				},
				fail: (err) => {
					console.error('通知发送失败', err);
				}
			});
			// 监听推送消息(需在应用初始化时调用)
			uni.onPushMessage((res) => {
				if (res.type === 'click') {
					// 处理通知栏点击事件
					console.log('用户点击了通知栏', res.payload);
					uni.navigateTo({
						url: '/pages/notify/notify?data=' + JSON.stringify(res.payload)
					});
				} else if (res.type === 'receive') {
					// 处理在线推送消息(应用在前台时触发)
					console.log('接收到推送内容', res.data);
					uni.showToast({
						title: '新消息:' + res.data.content
					});
				}
			});
			// 监听点击事件
			plus.push.addEventListener('click', (msg) => {
				console.log('通知点击事件:', msg);
				if (msg.payload) {
					const payload = JSON.parse(msg.payload);
					uni.navigateTo({
						url: payload.pagePath
					}); // 跳转指定页面
				}
			});
			// 监听接收事件(仅应用在前台时触发)
			plus.push.addEventListener('receive', (msg) => {
				uni.showToast({
					title: '新消息到达: ' + msg.content
				});
				plus.runtime.setBadgeNumber(1); // 更新角标
			});
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>
<style lang="scss">
</style>

六、测试

运行到手机或模拟器开始测试吧!!!

更多推荐