uni-push推送接入

花了两天时间终于把unipush接通了,记录下来也让大家少走一点弯路。

一、首先是HBuilderx的配置

很简单就勾选两个地方

uni-push推送接入_第1张图片

uni-push推送接入_第2张图片

把这两个权限勾选上就ok了。

二、uniapp开发者后台的配置

登录后台后填入下面的信息

uni-push推送接入_第3张图片

这一步,填写成功后,android和ios在应用已经启动的情况已经能收到推送了,但是app在离线状态还是收不到推送的。

接下来的配置是让,ios和android能在应用进程已经被杀死的情况也能收到推送

uni-push推送接入_第4张图片

uni-push推送接入_第5张图片

ios配置apsn的证书,android配置各厂商的推送信息。

到这一步客户端所有的配置已经完成了。

三、客户端代码

function pushListener() {
	this.clientid = plus.push.getClientInfo().clientid
	if (!this.clientid) { //如果获取的cid为空,说明客户端向推送服务器注册还未完成,可以使用setTimeout延时重试。
		setTimeout(() => {
			this.clientid = plus.push.getClientInfo().clientid
		}, 4000)
	}

	plus.push.addEventListener('click', (message) => {
		this.pushCallBack()
	});

	plus.push.addEventListener('receive', (message) => {
        this.pushCallBack()
	});
}

function pushCallBack() {
	
}

首先是获取cid,cid是每个设备向个推服务器注册以后生成的设备id,获取到cid后要在登录的时候把cid传给服务端和用户绑定起来,就可以实现特定用户的推送。

两个监听click很明显,就是点击时候出触发的。

receive有两种情况会触发

1.ios应用已经打开的情况,这种情况通知栏不会有消息。可以自己写这种情况的处理逻辑,一般会弹出一个弹窗问需不需要跳转,我的方式是用plus.push.createMessage本地创建一条消息。

2.android接收到不符合格式的推送(不符合{title:"xxxx",content:"xxxx",payload:"xxxxx"}),这个是服务端来控制的。

到此推送就算完成了,剩下的就是根据自己的项目来写收到推送的逻辑。

 

特别注意:如果要测试推送需要自定义基座来测试,直接运行的话使用的是hello uniapp的环境。

 

 

你可能感兴趣的:(uniapp)