vue 离线推送 小米 华为 无法接收离线消息

一、云函数

const uniPush = uniCloud.getPushManager({  
	appId: "__UNI__ABCDED" //自己的appid 
})
exports.main = async (event) => {  
	let obj = JSON.parse(event.body)  
	const res = await uniPush.sendMessage({  
		"push_clientid": obj.clientid, // 设备id,支持多个以数组的形式指定多个设备,如["cid-1","cid-2"],数组长度不大于1000  
		"title": obj.title, // 标题  
		"content": obj.content, // 内容  
		"payload": obj.payload, // 数据 
        "options": obj.options,//其他参数
        "force_notification": true, // 服务端推送 需要加这一句  
		"request_id": obj.request_id ,//请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失  
    })  
};

二、接收消息并跳转(写在app.vue页面onLaunch里面)

//#ifdef APP-PLUS
uni.onPushMessage((res)=>{
    if (res.type === "receive") {
        
        // 创建通知栏消息
          plus.push.createMessage(res.data.content, res.data.payload, {
             title: res.data.title,
             sound: "system",
             cover: false
          })
    } else {
        const msgType = res.data.payload.msgType
        const id = res.data.payload.id
       
        if(msgType == 1){
            uni.navigateTo({
                    url: `/pages/XX?id=${id}`
            })
        }
        
        
        
    }
})
 //#endif

三、上传设备id给后端

//#ifdef APP-PLUS
// uni-app客户端获取push客户端标记                            
uni.getPushClientId({
    success: (res) => {
        var push_clientid = res.cid
        console.log('客户端推送标识:',push_clientid)
        
        
        uni.request({
            url:"这里是后端url",
            data:{
                "cid":push_clientid
            },
            method:'post',   //get、post、delete
            header:{
                "Content-Type": "application/json",
                "token":token,
                    
            },
            success: (res) => { //如果访问接口成功就会进入success
            
                console.log(res)
            
            
            },
            fail: (res) => {
                console.log(res)
            }
        })
        
    },
    fail(err) {
        console.log(err)
    }
})
//#endif

四、开启

vue 离线推送 小米 华为 无法接收离线消息_第1张图片

五、厂商推送设置

开发者中心

vue 离线推送 小米 华为 无法接收离线消息_第2张图片

六、云函数配制路径

vue 离线推送 小米 华为 无法接收离线消息_第3张图片

vue 离线推送 小米 华为 无法接收离线消息_第4张图片

七、推送测试方式一:

vue 离线推送 小米 华为 无法接收离线消息_第5张图片

{
    "clientid": ["设备ID"],
    "title": "WORK",
    "content": "您的xx日程还有xx分钟就要开始了,请提前做好准备。",
    "payload": {
        "msgType": 2,
        "id": 1922
    },
    "options": {
        "HW": {
            "/message/android/category": "WORK"//注:WORK是华为消息分类栏目类型,如果没有申请时可以不设置,如果申请后一定要加,否则离线时无法接收消息
        },
        "XM": {"channel": "Default"}//小米
    }
}

注意:华为消息分类类型文档中心

八、推送测试方式二:

vue 离线推送 小米 华为 无法接收离线消息_第6张图片

vue 离线推送 小米 华为 无法接收离线消息_第7张图片

vue 离线推送 小米 华为 无法接收离线消息_第8张图片

8.1 透传内容

{"title":"任务提醒22","content":"任务内容8","payload":{"msgType":2,"id":1922}}

8.2 intent类型时的值:

intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=我是包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=任务提醒标题;S.content=任务提醒内容;S.payload={"msgType":2,"id":1922};end

8.3 注意

测试小米时要选定时任务,否则无法成功(定时任务执行一次后则没有问题了)。

你可能感兴趣的:(vue.js,javascript,前端)