h5+plus app 集成unipush

unipush集成了多家推送,配置很简单

"push" : {
    "unipush" : {
         "icons" : {
            "small" : {
                "ldpi" : "unpackage/res/drawable-ldpi/push_small.png",
                "mdpi" : "unpackage/res/drawable-mdpi/push_small.png",
                "hdpi" : "unpackage/res/drawable-hdpi/push_small.png",
                "xhdpi" : "unpackage/res/drawable-xhdpi/push_small.png",
                "xxhdpi" : "unpackage/res/drawable-xxhdpi/push_small.png"
              }
          }
      }
}

icons 配置android通知左侧小图标,注意图片为alpha通道透明png图片


image.png

获取cid会有延迟,可以采用轮询方式

const timer = setInterval(() => {
        if ((clientid && clientid !== 'null' && clientid !== 'undefined') || times > 10) {
          clearInterval(timer);
          times = 0;

          // 设备信息  型号 厂商 系统版本
          const model = window.plus.device.model;
          const vendor = window.plus.device.vendor;
          const clientVersion = window.plus.os.version;

          console.log('clientId获取成功:' + clientid);

          // 防止进入app后登录cid还未获取到,获取cid之后再关闭启动图
          window.plus.navigator.closeSplashscreen();
        } else {
          console.log('clientId获取失败');
          times += 1;
          const clientInfo = window.plus.push.getClientInfo();
          clientid = clientInfo.clientid;
        }
      }, 1000);

cid在线时(app在前台),手动创建消息

window.plus.push.addEventListener(
        'receive',
        (msg: any) => {
          console.log('receive msg:' + JSON.stringify(msg));

          // ios只能发送透传消息
          if (isIos()) {
            if (msg.aps === null && msg.type === 'receive') {
              const payload = msg.payload;
              window.plus.push.createMessage(payload?.content ?? '推送内容', JSON.stringify(payload), { title: payload?.title ?? '中山六院' });
            }
            // if ( msg.aps ) {  // Apple APNS message
            //     //APNS下发的消息,应用在前台

            // } else if ( 'LocalMSG' == msg.payload ) {   // 特殊payload标识本地创建的消息
            //     //本地创建的消息,通常不需要处理
            //     //注意:不要在这种情况下再此调用window.plus.push.createMessage,从而引起循环创建本地消息
            // } else {
            //     //接收到在线透传消息

            // }
            // // 其它逻辑
          }

          if (isAndroid()) {
            window.plus.push.createMessage(msg?.payload?.content, JSON.stringify(msg?.payload), { title: msg?.payload?.title });
          }
        },
        false
      );

点击消息,自定义数据处理,跳转操作等等可以在这里完成

window.plus.push.addEventListener(
        'click',
        (msg: any) => {
          // window.plus.nativeUI.alert(JSON.stringify(msg));

          if (isIos()) {
            console.log('ios click msg', JSON.stringify(msg));

            let payload: any;
            if (msg.type === 'click') {
              // APP离线点击包含click属性,这时payload是JSON对象
              payload = msg.payload;
            } else {
              // APP在线,收到消息不会包含type属性,这时的payload是JSON字符串,需要转为JSON对象
              payload = JSON.parse(msg.payload);
            }

            if (msg.aps) {
              // Apple APNS message
              // APNS下发的消息,应用在前台
            } else {
              
            }
          }

          if (isAndroid()) {
            const payload = JSON.parse(msg.payload);
          }
        },
        false
      );

TIPS:iphone调试需要在自定义基座下才能接收到推送

持续更新中。。。。

你可能感兴趣的:(h5+plus app 集成unipush)