推送消息 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、通知開關要打開,在手機上設置
為了節約篇幅,只記錄了重點步驟,還需要多看開發文檔
