开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天
在手机应用中消息推送是很常见的,我们前端通常会遇到消息推送的需求,当然可供选择的方式也很多,比如很常用的极光,融云,个推等等,今天我们来讲讲uniapp自带的unipush
1、官方api uni.getProvider(OBJECT)获取服务供应商;
uni.subscribePush(OBJECT)开启推送;
2、在app.vue的 onLaunch 生命周期内,实现跳转也出现过问题。应该是页面还没加载,加上定时后,可实现功能;
setTimeout(function(){
uni.navigateTo({url: '../fire/detail?detailID='+msgObj.id})
},1000);
3、前端APP.vue页面中代码,在onLaunch中编写
var info = plus.push.getClientInfo();
console.log(JSON.stringify(info));
// 清除角标
// clearBage() {
// //清空角标
// plus.runtime.setBadgeNumber(0);
// //导入个推原生类
// var GeTuiSdk = plus.ios.importClass('GeTuiSdk');
// GeTuiSdk.setBadge(0);
// uni.showToast({
// title: "应用角标已清除",
// icon: "none",
// })
// },
/* 5+ push 消息推送 ps:使用:H5+的方式监听,实现推送*/
plus.push.addEventListener(
'click',
function(msg) {
console.log('click:' + JSON.stringify(msg));
console.log(msg.payload);
console.log(JSON.stringify(msg));
//这里可以写跳转业务代码
var clent = uni.getSystemInfoSync().platform;
console.log('(click):' + JSON.stringify(msg))
if (clent == 'ios') {
//如果是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) {
console.log('payload:' + payload);
//_self.callback(payload+"");
_self.setUniPush_state('1');
_self.setUniPush_url(payload.payload);
uni.reLaunch({
url: '/pages/details/details'
});
}
}
if (clent == 'android') {
//如果是Android,收到playload均是是JSON字符串,需要转为JSON对象
var payload = msg.payload;
console.log('msg.payload:' + msg.payload);
if (payload != null || payload != undefined) {
console.log('payload:' + payload);
// _self.callback(payload+"");
_self.setUniPush_state('1');
_self.setUniPush_url(payload);
setTimeout(function(){
uni.reLaunch({
url: '/pages/details/details'
})
},1000);
}
}
},
false
);
// 监听在线消息事件
plus.push.addEventListener(
'receive',
function(msg) {
// plus.ui.alert(2);
//这里可以写跳转业务代码
console.log('recevice:' + JSON.stringify(msg));
console.log('点击事件')
},
false
);
获取clientid
var info = plus.push.getClientInfo().clientid;
uni.setStorageSync('cid',info)
console.log(JSON.stringify(info));