大家好,我是你的好朋友思创斯。今天说一说uni-app 推送_推送push,希望您对编程的造诣更进一步.
关于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 });
}
});
是否还在为ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:
【官方授权 正版激活】:
持续更新unipush各种问题,欢迎提问!
本文使用 排版
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/139228.html