主要用的框架是mui+vue+jquery这些技术
到华为官方进行配置一些参数
- SHA256 指纹
image.png
如果不知道的话点击该链接
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-config-agc-0000001050170137
2.开通推送服务
image.png
开通以后
image.png
3.用开发者中心后台Web页面发送Push消息
具体操作参考下面链接
https://ask.dcloud.net.cn/article/35622
4.代码中添加的app页面中
需要注意的地方就是messageTitle、messageContent 在app页面中用的是这个,在开发者中心后台Web页面发送Push消息也用这个。开发者中心后台Web页面发送Push消息与app页面的title和content一致,否者推送的消息为字符串
下面代码看不懂请参考
https://ask.dcloud.net.cn/article/34
var ua = navigator.userAgent.toLowerCase();
mui.plusReady(function() {
document.addEventListener('plusready', function(){
// 页面加载时触发
var pinf = plus.push.getClientInfo();
var cid = pinf.clientid;//客户端标识
console.log(cid)
}, false );
// console.log("222")
// var options = {cover:false};
// var str = '';
// str += ": 欢迎使用Html5 Plus创建本地消息!";
// plus.push.createMessage(str, "LocalMSG", options);
// 只有APP在线时,才会触发receive事件,透传消息不会触发系统消息,需要创建本地消息
plus.push.addEventListener("receive", function(msg) {
console.log("(receive):" + JSON.stringify(msg));
if (/iphone|ipad|ipod/.test(ua)) { //如果是IOS
var payload = msg.payload;
//【APP离线】收到消息,但没有提醒(发生在一次收到多个离线消息时,只有一个有提醒,但其他的没有提醒)
//【APP在线】收到消息,不会触发系统消息,需要创建本地消息,但不能重复创建。必须加msg.type验证去除死循环
if (msg.aps == null && msg.type == "receive") {
var messageTitle = payload.messageTitle;
var messageContent = payload.messageContent;
//创建本地消息,发送的本地消息也会被receive方法接收到,但没有type属性,且aps是null
plus.push.createMessage(messageContent, JSON.stringify(payload), {
title: messageTitle
});
}
}
//如果是Android,当APP在线时,收到透传消息不会进入系统消息,需要发送本地提醒。
if (/android/.test(ua)) {
var payload = JSON.parse(msg.payload);
var messageTitle = payload.messageTitle;
var messageContent = payload.messageContent;
plus.push.createMessage(messageContent, msg.payload, {
title: messageTitle
});
}
}, false);
//消息点击事件
//【APP在线】,收到透传消息通过,不会提醒至通知栏目,需要发送本地消息,再进行点击触发的点击事件。
//【APP离线】,收到离线透传消息,必须通过Java后台的Intent字符串携带payload,且符合格式才能触发click事件,格式不符合不会触发。
plus.push.addEventListener("click", function(msg) {
console.log("(click):" + JSON.stringify(msg));
if (/iphone|ipad|ipod/.test(ua)) { //如果是IOS
var payload;
if (msg.type == "click") { //APP离线点击包含click属性,这时payload是JSON对象
payload = msg.payload;
} else { //APP在线,收到消息不会包含type属性,这时的payload是JSON字符串,需要转为JSON对象
payload = JSON.parse(msg.payload);
}
if (payload != null || payload != undefined) {
// var messageType = payload.messageType;
// messageClick(messageType, payload);
}
}
if (/android/.test(ua)) { //如果是Android,收到playload均是是JSON字符串,需要转为JSON对象
var payload = JSON.parse(msg.payload);
console.log(payload)
if (payload != null || payload != undefined) {
// var messageType = payload.messageType;
// messageClick(messageType, payload);
}
}
}, false);
})
该代码参考作者
https://blog.csdn.net/xqhys/article/details/106474792
华为离线推送要求:
1.需要提交云端打包
2.配置sha256指纹证书
3.用自有证书打正式签名包
测试的话首先运行》运行到手机或模拟器》制作自定义基座
打包完成以后运行》运行基座选择》自定义调试基座
连接手机》ctrl+r运行