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

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

  • 相关阅读:
    WeakHashMap、IdentityHashMap 、EnumMap简单了解——高淇JAVA300讲笔记之其他Map实现类
    Properties简介——高淇JAVA300讲笔记之Hashtable
    简单实现一个自定义的HashMap——高淇JAVA300讲笔记之HashMap
    简单实现一个自定义的HashSet——高淇JAVA300讲笔记之HashSet
    Enumeration接口——高淇JAVA300讲笔记之其他容器
    Queue接口——高淇JAVA300讲笔记之其他容器
    Collections类的常用方法——高淇JAVA300讲笔记之Collections类
    排序容器——高淇JAVA300讲笔记之TreeSet与TreeMap
    类的引用类型成员
    CentOS5.4下安装codeblocks 12.11
  • 原文地址:https://www.cnblogs.com/wishit/p/16002520.html
Copyright © 2020-2023  润新知