四级标题 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/