2021-07-17

uni-app使用unipush推送问题汇总(转载)

关于oppo和小米手机收不到消息的问题
OPPO 推送的应用信息需要应用上线后,才能获取。

关于华为手机离线推送厂商渠道失败的问题
华为平台创建PUSH权益的时候,sha256指纹证书需要填写上,

并且华为推送测试需要使用自有证书打包;(华为渠道有sha256指纹证书检验)

华为平台sha256指纹证书填写如图:

上传iOS证书提示“证书环境错误的问题
导证书不要把钥匙串也导进来,记得是推送证书,不是打包证书,两个不要搞混了。

关于推送的监听问题
推送的消息分为两种 ,1:通知消息 2:透传消息

(1)通知消息的推送 ,会在消息中心显示,点击通知启动(激活)应用到前台运行,触发“click”事件。

(2)透传数据的推送,可以响应click和receive。

发送透传数据的格式是标准格式({title:“通知标题”,content:“通知内容”,payload:“通知测试”}),会在消息中心展示,并且这个时候当用户点击这个消息,就会响应click事件,只能响应click事件。

发送的透传数据不是标准格式并且当前应用在活动,同时满足这些条件,才可以响应receive事件,并且不会在消息中心展示。

总结为:

触发click事件: 发送透传数据并且格式为标准格式,会在消息中心展示。

触发receive事件:发送透传数据且格式为非标准格式且应用在活动,不会在消息状态栏显示。

ios:

在线:只能响应receive,不会在系统消息中心显示推送通知。

离线:使用苹果APNS通道下发推送通知,手机接收后在系统通知栏中显示,点击消息后启动应用(如果已经启动则从后台切换到前台),同时触发“click”事件。

Android:

在线(个推推送通道可用):推送通知和透传消息都使用个推的推送通道下发推送消息。

离线(个推推送通道不可用):如果符合厂商推送的厂商手机(配置了手机厂商推送参数并且在对应厂商的手机上),则使用厂商推送通道下发推送消息;否则使用个推的离线推送通道,离线消息会存储在消息离线库,离线时间内APP在线后下发推送消息。

在App.vue文件onLaunch方法中具体代码表现为:

plus.push.setAutoNotification(true)

//【APP在线】,收到透传消息通过,不会提醒至通知栏目,需要发送本地消息,再进行点击触发的点击事件。
//【APP离线】,收到离线透传消息,必须通过Java后台的Intent字符串携带payload,且符合格式才能触发click事件,格式不符合不会触发
plus.push.addEventListener(“click”, function(msg) {
var payload;
console.log(“addEventListener click:” + JSON.stringify(msg));
if (isIOS) {
//APP离线点击包含click属性,这时payload是JSON对象
if (msg.type && msg.type == “click”) {
payload = msg.payload;
} else {
//APP在线,收到消息不会包含type属性,这时的payload是JSON字符串,需要转为JSON对象
payload = JSON.parse(msg.payload);
}
navigateTo(payload)
} else {
payload = JSON.parse(msg.payload);
if (typeof payload === “string”) {
payload = JSON.parse(payload)
}
navigateTo(payload)
}
}, false);

plus.push.addEventListener(‘receive’, function(msg) {
console.log(“addEventListener receive:” + JSON.stringify(msg));
if (isIOS) {
//【APP离线】收到消息,但没有提醒(发生在一次收到多个离线消息时,只有一个有提醒,但其他的没有提醒)
//【APP在线】收到消息,不会触发系统消息,需要创建本地消息,但不能重复创建。必须加msg.type验证去除死循环
if (!msg.aps && msg.type == “receive”) {
//创建本地消息,发送的本地消息也会被receive方法接收到,但没有type属性,且aps是null
plus.push.createMessage(msg.content, JSON.stringify(msg.payload), { title: msg.title });
}
} else {
//如果是Android,当APP在线时,收到透传消息不会进入系统消息,需要发送本地提醒。
plus.push.createMessage(msg.content, JSON.stringify(msg.payload), { title: msg.title });
}
});

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值