學習路之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)
創建本地通知欄消息