uniapp 中使用unipush(个推)

2,140 阅读2分钟

实现推送有两个步骤

1。 在开发者后台,找到相对应的项目,开通个推功能

新开通的项目,选择创建消息,即可打开下图页面, 即为开通成功

  1. 完成编码 本人写在App.vue的onLaunch生命周期当中
    var info = plus.push.getClientInfo();   //5+api获取设备的clientid
    var cid = info.clientid
    plus.push.addEventListener(            // 点击通知栏消息
      "click",
      function (msg) {                     // 点击通知栏后的回调      
      },
      false
    );
    
    plus.push.addEventListener(            // 监听在线消息事件
      "receive",
      function (msg) {
        //  监听到在线消息推送后的回调
        let payload = JSON.parse(msg.payload);
        plus.push.createMessage(payload.body, payload.body, {    // 主动推送至状态栏
          title: payload.title,
        });
      },
      false
    );

简单说明一下,推送主要用到两个方法, click和receive

click 为点击了状态栏里的提示的监听回调

receive 为app在前台打开时,接收到后台的推送后的监听回调

如果应用不保活,则不会接受receive , receive消息会有一定的存储期 , 存储期由后台人员编写设置, 应用下次打开,存储期的应用会挨个出发receive

receive接受到的消息,不会显示在状态栏, 换言之不会有提示,仅仅是一个回调,客户端,需要使用5+api plus.push.createMessage() 来自己设置参数,弹出状态栏的提示框

状态栏的图标默认是打包 客户端的logo图

当receive接受到的消息时,可以让后台设置在线个推,离线厂商,但是本人注册了个平台的推送开发者,发现,没什么用, 而且,receive一直可以接收到,, 作者估计和手机的设置有关,,只有在手机的应用程序里强制停止了才算关掉? 我的华为,是关了后台,没有强制停止,收不到消息,,,我的一加8,关了后台,没强制停止,可以接受到, 就很魔性。

最后一点,需要在合适的页面,调用后台接口,将最开始获取 clientid 传给后端, 一台移动设备的 clientid 是固定的, 后端用次字段,判断消息发送给谁