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、通知开关要打开,在手机上设置

为了节约篇幅,只记录了重点步骤,还需要多看开发文档

posted @ 2022-03-14 00:05  中国结  阅读(1070)  评论(0编辑  收藏  举报