unipush实现推送,包括在线和离线详细步骤

四级标题 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 
  //结束获取

}
3 最后在app.vue文件中 进行事件监听

老版
onLaunch: function () {

//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();

},

新版
onLaunch: function () {

// #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();

},

***************************推送的解释
这里填写的cid就是APP代码段获取到的clientId,填入后预览系统提示发送成功。

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。
手机通知权限要打开,要不你就等到天荒地老吧

App Uploader
APP开发助手 iOS APP上架到App Store的辅助工具,解决iOS APP上架繁琐费时的情况,帮助跨平台APP开发者上架苹果应用,在没有配置Mac苹果机的情况,实现iOS证书申请,创建iOS开发者证书、iOS发布证书等各类证书,iOS开发者在Windows、Linux或Mac系统中上传IPA到App Store,简化iOS APP上架流程!在任何电脑中轻松快速上架你的APP

下面是App Uploader 下载链接官网
https://www.applicationloader.net/

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值