当前位置: 首页 > article >正文

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

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

  • 一、绑定云空间及创建云函数
  • 二、编写发送界面
  • 三、效果
  • 后期展望:

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

在这里插入图片描述

在这里插入图片描述

  • package.json
{"name": "server-push","dependencies": {},"main": "index.js","extensions": {"uni-cloud-push": {}}
}
  • index.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
};

二、编写发送界面

<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.cidconsole.log('客户端推送标识cid:', push_clientid,typeof push_clientid)this.deviceIds.push(push_clientid)}})},methods: {send(){console.log('aaaaaaaa');let send_data = {cids: this.deviceIds, // 使用存储的设备 IDtitle: 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数组,
再调用云函数

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)
创建本地通知栏消息

http://www.lryc.cn/news/2385541.html

相关文章:

  • Java面向对象 一
  • 怎么开发一个网络协议模块(C语言框架)之(二) 数据结构设计
  • 30天自制操作系统day5(vram和显存)(GDT和IDT)(c语言结构体)(汇编-c)(ai辅助整理)
  • 【音频】drc 限幅器、多带限幅器、压缩器、多带压缩器
  • leetcode hot100刷题日记——12.反转链表
  • osgEarth中视角由跟随模式切换到漫游模式后没有鼠标拖拽功能问题分析及解决方法
  • STM32中断优先级分组有哪几种?
  • 《Python语言程序设计》第4章第8题3个个位数之间比大小。‘a小于b而b大于c’这是最有漏洞的一个对比,请问我如何判断a和c
  • Selenium 测试框架 - Python
  • RNN GRU LSTM 模型理解
  • AutoCompose - 携程自动编排原理 -【编排关系DAG的构建】
  • 【MC】红石比较器
  • 危化品经营单位安全生产管理人员考试主要内容
  • get_the_category() 和 get_the_terms() 的区别
  • 红黑树简单模拟实现
  • 豪越科技:消防应急装备智能仓储管理新变革
  • 如何设计Agent的记忆系统
  • 毕业论文格式(Word)
  • 学习STC51单片机14(芯片为STC89C52RC)
  • 基于CodeBuddy实现本地网速的实时浏览小工具
  • stable diffusion论文解读
  • 计算机网络(3)——传输层
  • LangChain构建RAG的对话应用
  • 目标检测DN-DETR(2022)详细解读
  • 嵌入式培训之系统编程(四)进程
  • 天文数据处理:基于CUDA的射电望远镜图像实时去噪算法(开源FAST望远镜数据处理代码解析)
  • VS编码访问Mysql数据库
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据合并与对比-pd.merge():数据库风格合并
  • leetcode 862. 和至少为 K 的最短子数组
  • CodeBuddy 实现图片转素描手绘工具