c# .netcore3.1 unipush(个推)服务端开发笔记
推送消息 c# .netcore3.1 unipush(个推)前后端开发笔记
一、前端:
1、获取cid,在APP登录页面加入如下代码,保存到数据库,以备服务端调用
this.mycid=plus.push.getClientInfo().clientid;
2、在app.vue中的onLaunch方法里加入如下代码
// #ifdef APP-PLUS let timer = false; //从系统消息中心点击消息启动应用事件 plus.push.addEventListener("click",(msg)=>{ clearTimeout(timer); timer = setTimeout(()=>{ if(msg.payload){ uni.navigateTo({ url:msg.payload }) } },1500) },false) //应用从推送服务器接收到推送消息事件 plus.push.addEventListener("receive",(msg)=>{ if("LocalMSG" == msg.payload){ }else{ if(msg.type=='receive'){ var options = {cover:false,title:msg.title}; plus.push.createMessage(msg.content, msg.payload, options); } } },false) // #endif
3、manifest.json/App模块配置/push(消息推送),选中uniPush,然后点击【配置】进入【开发者中心】
***注意:后面用到的appid等是上图所示,不是个推的appid
二、服务端
1、登录个推官网,文档中心,主要看RestAPI V2,根据这个文档生成代码(可以用postman软件调试,可以自动生成C#代码,稍加改动即可)
2、获取token(主要看【鉴权API】)
获取token要注意的地方是:获取当前的时间戳,是格林威治时间的时间戳,而不是北京时间的时间戳,token的有效期为24小时
格式如下:
{"sign":"xxxxxxxxxxxxxxxxxxxxxxx","timestamp":"1646774804760","appkey":"xxxxxxxxxx"}
3、创建消息(主要看【推送API】我采用的是【toList】创建消息)
生成消息,返回taskid;这部分最重要,也最复杂,只说容易出错的地方,其他请仔细阅读开发文档
全路径名称:io.dcloud.PandoraEntry
厂商推送消息参数:push_channel 必须有,否则服务端推送成功,APP收不到消息
{ "request_id":"4023052754555868195", "group_name":"xxxxx", "settings": { "ttl":3600000, "strategy":{ "default":1 } }, "push_message": { "notification": { "title":"信息标题", "body":"信息内容", "click_type":"intent", "intent":"intent://io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000;component=你的APP包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title='xxxx';S.content='xxxxx';S.payload='xxx';end" } }, "push_channel": { "android": { "ups": { "notification": { "title":"信息标题", "body":"信息内容", "click_type":"intent", "intent":"intent://io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000;component=你的APP包名/io.dcloud.PandoraEntry;SUP-OL-SU=true;S.title='xxxx';S.content='xxxx';S.payload='xxx';end" }, "options": { "HW": { "/message/android/notification/badge/class": "io.dcloud.PandoraEntry", "/message/android/notification/importance": "HIGH", "/message/android/notification/badge/add_num": 1 }, "VV": { "/classification": 0 } } } } } }
4、推送消息(主要看【推送API】我采用的是【toList】执行cid批量推)
格式如下:
{"audience":{"cid":["xxxxxxxxxxxxxxxxx"]},"taskid":"RASL_0313_xxxxxxxxxxxxxxxxxxxxxxxxx","is_async":false}
以上配置好后,可以测试了,服务端发送消息,APP在线时就可以收到消息了
三、离线推送的实现方法:
需要配置厂商参数(以华为为例)
1、华为开发者中心,创建应用(不必上架,只要能得到:包名、appid、secretkey即可)
2、【我的项目】中需要填的内容:
【项目设置】
【常规】数据处理位置、下载agconnect-services.json备用、SHA256证书指纹
【API管理】打开推送服务
【推送服务】【配置】开通:项目回执状态
3、dcloud开发者中心,【厂商推送设置】【华为】把上面两步得到的参数填上即可
要注意:
1、【消息推送】【配置管理】【故障排查】【一键检测】里的DeviceToken是否为空,离线配置成功应该有内容的
2、通知开关要打开,在手机上设置
为了节约篇幅,只记录了重点步骤,还需要多看开发文档
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)