uniapp push推送

557 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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));