此文转载自:https://blog.csdn.net/weixin_38333426/article/details/112887538


uniapp集成unipush推送后,会遇到ios保持应用在前台或后台时无法收到通知栏消息问题,只能在应用中监听推送然后创建本地通知,此篇文章根据这个问题进行处理推送监听分别执行不同的业务。


完整处理示例

var platform = uni.getSystemInfoSync().platform;
//#ifdef APP-PLUS  
/* 5+  push 消息推送 ps:使用:H5+的方式监听,实现推送*/
plus.push.addEventListener("click", function(msgc) {
	console.log(msgc);
	//  && msgc.type == 'click'
	if (platform == 'ios') {
		//离线是payload为object , 在线时本地创建的为string(本地创建通知只能传string,否则无法传递payload)
		if (typeof msgc.payload == 'string') {
			console.log('string')
			var paymsg = JSON.parse(msgc.payload);
		} else {
			console.log('obj')
			var paymsg = msgc.payload;
		}
		console.log(paymsg)
		//执行跳转判断
	}
	//这里可以写跳转业务代码
}, false);
// 监听在线消息事件    
plus.push.addEventListener("receive", function(msg) {
	//这里可以写跳转业务代码
	console.log(msg)
	if (msg.type == "receive") // 这里判断触发的来源,否则一直推送。  
	{
		if (platform == 'ios') {
			// console.log(msg.payload)
			plus.push.createMessage(
				msg.payload.content,
				//本地创建通知payload只能传string,否则无法成功传递(为null)
				JSON.stringify(msg.payload), {
					cover: false,
					title: msg.title,
				});
		}
	}
	if (platform == 'android') {
		//执行跳转判断
	}
}, false);

//#endif  

提示

上面的监听处理代码需放到App.vue文件onLaunch方法里面!

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-01
  • 2022-01-05
  • 2021-07-13
  • 2022-12-23
  • 2022-02-08
  • 2021-11-05
猜你喜欢
  • 2021-08-28
  • 2021-09-10
  • 2021-05-07
  • 2022-12-23
  • 2022-12-23
  • 2021-10-06
相关资源
相似解决方案