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调试需要在自定义基座下才能接收到推送
持续更新中。。。。
网友评论