学习路之uniapp--unipush2.0推送功能--给自己发通知

学习路之uniapp--unipush2.0推送功能--服务端推送消息

一、绑定云空间及创建云函数

  • package.json
bash 复制代码
{
  "name": "server-push",
  "dependencies": {},
  "main": "index.js",
  "extensions": {
    "uni-cloud-push": {}
  }
}
  • index.js
js 复制代码
'use strict';
const uniPush = uniCloud.getPushManager({appId:"__UNI__5630355"}) //注意这里需要传入你的应用appId,用于指定接收消息的客户端
exports.main = async (event, context) => {
	//event为客户端上传的参数
	console.log('event : ', event);
	
	let obj = JSON.parse(event.body)
	console.log('obj : ', obj);
	const res = await uniPush.sendMessage({
		"push_clientid": obj.cids, // 设备id,支持多个以数组的形式指定多个设备,如["cid-1","cid-2"],数组长度不大于1000  
		"title": obj.title, // 标题  
		"content": obj.content, // 内容  
		"payload": obj.data, // 数据  
		"force_notification": true, // 服务端推送 需要加这一句  
		"request_id": obj.request_id //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失   
	})
	//返回数据给客户端
	return res
};

二、编写发送界面

js 复制代码
<template>
	<view class="content">
		<input v-model="title" placeholder="输入标题" />
		<input v-model="content" placeholder="输入标题" />
		<text class="title">接收的设备:</text>
		<text v-for="(item, index) in deviceIds"  >
			{{item}}
		</text>
		
		<button @click="send">发送</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				deviceIds:[],//接收消息的设备
				title: '我是通知标题',
				content:'我是通知内容'+Math.floor(Math.random() * 100),
			}
		},
		onLoad() {
			uni.getPushClientId({
				success: (res) => {
					let push_clientid = res.cid
					console.log('客户端推送标识cid:', push_clientid,typeof push_clientid)
					this.deviceIds.push(push_clientid)
				}
			})
		},
		methods: {
			send(){
				console.log('aaaaaaaa');
				let send_data = {
					cids: this.deviceIds, // 使用存储的设备 ID
					title: this.title,
					content: this.content,
					data: {},
					request_id: "",
				};
				uniCloud.callFunction({
					name: "server-push", // 填写你自己的云函数名称
					data: {
						body: JSON.stringify(send_data) // 将数据转换为 JSON 字符串并赋值给 body
					},
					success(dataRes) {
						console.log("云函数返回的参数", dataRes)
					},
					fail(err) {
						console.log("云函数报错", err)
					},
					complete() {}
				})
			}
		}
	}
</script>

<style>
	.content {
		padding: 20px;
		text-align: center;
	}
	
	input {
		border: 1rpx solid #cecece;margin-top: 50rpx;height: 80rpx;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
	
	button {
	    padding: 10px 20px;
	    background-color: #007aff;
	    color: white;
	    border: none;
	    border-radius: 5px;
	    cursor: pointer;
	}
	button:hover {
	    background-color: #0056b3;
	}
	.button-text {
	    color: #fff;
	    font-size: 12px;
	}
</style>

三、效果

后期展望:

使用自已服务器接口获取CID集合,然后存在deviceIds数组,

再调用云函数

js 复制代码
uniCloud.callFunction({
					name: "server-push", // 填写你自己的云函数名称
					data: {
						body: JSON.stringify(send_data) // 将数据转换为 JSON 字符串并赋值给 body
					},
					success(dataRes) {
						console.log("云函数返回的参数", dataRes)
					},
					fail(err) {
						console.log("云函数报错", err)
					},
					complete() {}
				})

就可以实现全局、点对点通知。

createPushMessage+ websocket

uni.createPushMessage(OBJECT)

创建本地通知栏消息

相关推荐
不爱说话郭德纲1 天前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
HashTang2 天前
【AI 编程实战】第 12 篇:从 0 到 1 的回顾 - 项目总结与 AI 协作心得
前端·uni-app·ai编程
JunjunZ2 天前
uniapp 文件预览:从文件流到多格式预览的完整实现
前端·uni-app
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
TT_Close3 天前
“啪啪啪”三下键盘,极速拉起你的 uni-app 项目!
vue.js·uni-app·前端工程化
特立独行的猫a3 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS影视票房榜组件完整实现过程
华为·uni-app·harmonyos·轮播图·uniapp-x
00后整顿职场3 天前
Hbuilderx APP真机无法识别iqoo Z9+手机设备解决方案
uni-app·uniapp真机调试·真机运行
前端小雪的博客.4 天前
【保姆级教程】uniAI 插件高效开发 uni-app 微信小程序(附实战案例)
微信小程序·uni-app·ai编程·uniai
T^T尚4 天前
一个完整的项目怎么打包成为一个app
前端·uni-app
阿巴资源站4 天前
uniapp加水印
java·前端·uni-app