四级标题 unipush实现推送,东方包括在线和离线详细步骤
第一步,先 开通UniPush推送服务 , 具体怎么开通设置,参考下面网址! https://ask.dcloud.net.cn/article/35716
注意:1 在申请开通时,需要确保输入的 Android包名或 iOS Bundle ID 必须与打包时配置的一致,否则可能会导致无法收到推送消息.
2 Android平台: Android包名必须与HBuilderX中App云端打包时配置的Android包名一致;Android 应用签名必须填入打包时使用证书的SHA1指纹。 iOS平台: iOS BundleId必须与HBuilderX中App云端打包时配置的Bundle ID(AppID)一致。 3 iOS 平台还需要在 “配置管理”-“应用配置” 页面上传推送证书
讯享网
第二步:服务端下发推送消息,
第三步:客户端处理推送消息
1 在登陆成功之后就把参数传给后台,绑定cid 和用户
onShow () {
讯享网// #ifdef APP-PLUS var info = plus.push.getClientInfo(); this.appId = info.appid this.appKey = info.appkey this.clientId = info.clientid // this.$cache.put("cid", this.clientId); if (!this.clientId ) { //如果获取的cid为空,说明客户端向推送服务器注册还未完成,可以使用setTimeout延时重试1。 setTimeout(() => { this.clientId = JSON.stringify( info.clientid ) }, 3000)
}
this.clientidUserRole()
// plus.nativeUI.alert(this.clientId)
// #endif
},
2 然后在 methods中 定义传接口的方法
methods: {
//开始获取
// #ifdef APP-PLUS
async clientidUserRole () {
let options = {
url: this. s t o r e . s t a t e . a p i . I T S M A P I P O S T C I D , d a t a : a p p i d : t h i s . a p p I d , a p p k e y : t h i s . a p p K e y , c l i e n t i d : t h i s . c l i e n t I d , t o k e n : t h i s . store.state.api.ITSM_API_POST_CID, data: { appid:this.appId, appkey:this.appKey, clientid: this.clientId }, token: this. store.state.api.ITSMAPIPOSTCID,data:appid:this.appId,appkey:this.appKey,clientid:this.clientId,token:this.cache.get(“token”)
}
let [err, res] = await this. h t t p . p o s t ( o p t i o n s . u r l , o p t i o n s . d a t a , o p t i o n s . t o k e n , f a l s e ) p l u s . n a t i v e U I . a l e r t ( r e s , ′ 这是获取到的 c i d 信息 a a a a a a a a a a a a a a a a a a a ′ ) i f ( ! t h i s . http.post(options.url, options.data, options.token, false) plus.nativeUI.alert(res,'这是获取到的cid信息aaaaaaaaaaaaaaaaaaa') if (!this. http.post(options.url,options.data,options.token,false)plus.nativeUI.alert(res,′这是获取到的cid信息aaaaaaaaaaaaaaaaaaa′)if(!this.http.errCheck(err, res)) return
}, // #endif //结束获取
讯享网//console.log('App Launch'); //#ifdef APP-PLUS var info = plus.push.getClientInfo(); this.clientId = JSON.stringify( info.clientid ) plus.nativeUI.alert( this.clientId ,'这是获取到的cid') /* 5+ push 消息推送 ps:使用:H5+的方式监听,实现推送*/ plus.push.addEventListener("click", function (msg) { plus.nativeUI.alert("click:" + JSON.stringify(msg)); plus.nativeUI.alert(msg.payload,'这是啥'); // plus.nativeUI.alert(JSON.stringify(msg)); }, false); // 监听在线消息事件 plus.push.addEventListener("receive", function (msg) { // plus.ui.alert(2); plus.unativeUIi.alert("recevice:" + JSON.stringify(msg)) }, false); //#endif this.downloadCount = this.$cache.get("downloadCount"); this.checkUpdate();
},
// #ifdef APP-PLUS /* 5+ push 消息推送 ps:使用:H5+的方式监听,实现推送*/ plus.push.addEventListener("click", function (msg) { plus.nativeUI.alert("click:" + JSON.stringify(msg)); plus.nativeUI.alert(msg.payload,'在线消息'); if (app.isIOS()) { //如果是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; messageClick(messageType, payload); } } if (app.isAndroid()) { //如果是Android,收到playload均是是JSON字符串,需要转为JSON对象 var payload = JSON.parse(msg.payload); if (payload != null || payload != undefined) { var messageType = payload.messageType; messageClick(messageType, payload); } } }, false); // 监听在线消息事件 plus.push.addEventListener("receive", function (msg) { // plus.ui.alert(2); plus.nativeUI.alert("recevice:" + JSON.stringify(msg)) plus.nativeUI.alert(msg.payload,'在线消息'); if (app.isIOS()) { //如果是IOS var payload = msg.payload; //【APP离线】收到消息,但没有提醒(发生在一次收到多个离线消息时,只有一个有提醒,但其他的没有提醒) //【APP在线】收到消息,不会触发系统消息,需要创建本地消息,但不能重复创建。必须加msg.type验证去除死循环 if (msg.aps == null && msg.type == "receive") { var messageTitle = payload.messageTitle; var messageContent = payload.messageContent; //创建本地消息,发送的本地消息也会被receive方法接收到,但没有type属性,且aps是null plus.push.createMessage(messageContent, JSON.stringify(payload), {title: messageTitle}); } } if (app.isAndroid()) { //如果是Android,当APP在线时,收到透传消息不会进入系统消息,需要发送本地提醒。 var payload = JSON.parse(msg.payload); var messageTitle = payload.messageTitle; var messageContent = payload.messageContent; plus.push.createMessage(messageContent, msg.payload, {title: messageTitle}); } }, false); //#endif this.downloadCount = this.$cache.get("downloadCount"); this.checkUpdate();
},
var info = plus.push.getClientInfo();
console.log( JSON.stringify( info ) );
unipush id
‘c1ebaa9aac70ef39cf2738dce4685f94’ token
‘c1ebaa9aac70ef39cf2738dce4685f94’ clientid 这是我手机的cid
pPyZWvH3Fa6PXba10aJ009 appid
b7dOGINPHR7pqwUxDhpTi4 appkey
如果点击通知消息,跳转不了页面,加上定时器试一试
setTimeout(function(){
uni.navigateTo({
url: ‘…/fire/detail?detailID=’+msgObj.id
})
},1000);
注意:
手机必须是云打包或者自定义基座运行的app
填写正确clientId,这个id定位了你的手机,可以理解为手机的ip。
手机通知权限要打开,要不你就等到天荒地老吧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/69380.html