美文网首页
h5+plus app 集成unipush

h5+plus app 集成unipush

作者: drneilc | 来源:发表于2022-06-08 11:03 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/uabemrtx.html