uniapp 实现信息推送(App)

时间:2021-08-07
本文章向大家介绍uniapp 实现信息推送(App),主要包括uniapp 实现信息推送(App)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

废话不多说直接上代码

以下代码需写在onlaunch生命周期内

onlaunch(){// onlaunch应用级生命周期 :当uni-app 初始化完成时触发(全局只触发一次)

//#ifdef APP-PLUS
const cInfo = plus.push.getClientInfo() // 获取当前设备的客户端id,传给后台,实现指定用户
info && uni.setStorageSync('clientInfo', info) //储存cInfo

plus.push.addEventListener("click", function(msg) { //监听消息点击事件
        let payload; 
	// iOS 环境下
	if(uni.getSystemInfoSync().platform == 'ios') {
		 
		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) {  //此处是预防两次响应推送后的执行事件,此处很玄乎
			// let messageType = payload.messageType; 
			// onLaunch 生命周期里,页面跳转有问题,跳不过去
			// 应该是页面还没加载,加上定时后,就可以了;
			setTimeout(() => { //做相应的跳转 
				uni.navigateTo({
					url: payload.payload
				})
			}, 1000)
		}
	} else { // Android
		 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


}


来源:https://www.icode9.com/content-4-999837.html

原文地址:https://www.cnblogs.com/qingwututu/p/15111798.html