uniapp+个推实现推送通知

//#ifdef APP-PLUS
var info = plus.push.getClientInfo()
// 获取当前设备的客户端id,传给后台,实现指定用户
info && uni.setStorageSync('clientInfo', info)
// 使用5+App的方式进行监听消息推送
//消息点击事件  
//【APP在线】,收到透传消息通过,不会提醒至通知栏目,需要发送本地消息,再进行点击触发的点击事件。  
//【APP离线】,收到离线透传消息,必须通过Java后台的Intent字符串携带payload,且符合格式才能触发click事件,格式不符合不会触发。  
plus.push.addEventListener("click", function(msg) {
	console.log('click', JSON.stringify(msg))
	// IOS
	if(uni.getSystemInfoSync().platform == '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; 
			// onLaunch 生命周期里,页面跳转有问题,跳不过去
			// 应该是页面还没加载,加上定时后,就可以了;
			setTimeout(() => {
				uni.navigateTo({
					url: payload.payload
				})
			}, 1000)
		}
	} else { // Android
		var payload = msg.payload;
		if (payload != null || payload != undefined) { 
			// onLaunch 生命周期里,页面跳转有问题,跳不过去
			// 应该是页面还没加载,加上定时后,就可以了; 
			setTimeout(() => {
				uni.navigateTo({
					url: payload
				})
			}, 1000)
		}
	}
}, false);
//收到透传消息  
//只有APP在线时,才会触发receive事件,透传消息不会触发系统消息,需要创建本地消息  
plus.push.addEventListener("receive", function(msg) {
	//业务代码
	// IOS
	if(uni.getSystemInfoSync().platform == 'ios') {
		//【APP离线】收到消息,但没有提醒(发生在一次收到多个离线消息时,只有一个有提醒,但其他的没有提醒)  
		**APP在线】收到消息,不会触发系统消息,需要创建本地消息,但不能重复创建。必须加msg.type验证去除死循环**                
		if (msg.type == "receive") {  
			//创建本地消息,发送的本地消息也会被receive方法接收到,但没有type属性,且aps是null  
			plus.push.createMessage(msg.content, JSON.stringify(msg), {title: messageTitle});  
		}  
	} else { // Android
		var payload = JSON.parse(msg.content); 
		var messageTitle = payload.title;
		var messageContent = payload.content;
		plus.push.createMessage(messageContent, payload, {title: messageTitle})
	}
	
}, false);
//#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值