uni-push2.0 消息推送
开发前先看开发文档,避免走一些弯路
https://ask.dcloud.net.cn/article/40283 或者 https://www.yuque.com/docs/share/82f5a00d-4c33-4889-96db-09e0c6833e22?#rrJsp
1.当勾选了uni-push2.0后一定要重新打包,不然获取到的cid跟服务端的不匹配,识别不到用户。
2.通知消息与透传消息的区别
通知消息ios系统不支持,透传就是直接发数据,有需要ios跟安卓的直接设置透传消息
3.uni-push2.0无需再写plus.push.addEventListener(“click”)监听(此为1.0的写法),
2.0需要改成uni.onPushMessage获取通知消息
// 直接上代码,避免到处找资料
uni.onPushMessage((res) => {
//获取到通知消息有分为点击与监听
if(res.type=='click'){
clearTimeout(timer);
timer = setTimeout(() => {
// 处理跳转的业务可以写这边
},1500);
}else{
//aps为空说明是在线,aps有值的时候是离线,避免离线点击后再监听会出现两次通知栏
if(res.data.aps){
return;
}
let platform = uni.getSystemInfoSync().platform;
let msg=res.data;
if (platform=='ios') { //由于IOS 必须要创建本地消息 所以做这个判断
if (msg.payload&& msg.payload!=null) {
plus.push.createMessage(msg.content,msg.payload) //创建本地消息
}
}
if (platform=='android') {
let options={
cover:false,
sound:"system",
title:msg.title
}
plus.push.createMessage(msg.content,msg.payload,options);
}
}
})
根据业务需要,当用户退出账号的时候将不再收到推送,这时候需要手动唤起关闭推送功能,不然只要程序还在运行,依然手机可以收到推送。
按照开发提供的文档
在common/js下添加igenxinTool.js
function igexinTool() {
var isAndorid, PushManager, context, Instance, GeTuiSdk;
if(plus.os.name == 'Android') {
isAndorid = true;
} else {
isAndorid = false;
}
if(isAndorid) {
PushManager = plus.android.importClass("com.igexin.sdk.PushManager");
context = plus.android.runtimeMainActivity().getContext();
Instance = PushManager.getInstance();
} else {
GeTuiSdk = plus.ios.importClass("GeTuiSdk");
}
this.bindAlias = function(alias) {
if(isAndorid) {
Instance.bindAlias(context, alias);
} else {
GeTuiSdk.bindAliasandSequenceNum(alias, alias);
}
}
this.unbindAlias = function(alias) {
if(isAndorid) {
Instance.unBindAlias(context, alias, true);
} else {
GeTuiSdk.unbindAliasandSequenceNumandIsSelf(alias, alias, true);
}
}
this.getVersion = function() {
if(isAndorid) {
return Instance.getVersion(context);
} else {
return GeTuiSdk.version;
}
}
//开启推送
this.turnOnPush = function() {
console.log('开启',plus.os.name)
if(isAndorid) {
Instance.turnOnPush(context);
} else {
GeTuiSdk.setPushModeForOff(false);
}
}
//关闭推送
this.turnOffPush = function() {
console.log('关闭',plus.os.name)
if(isAndorid) {
Instance.turnOffPush(context);
} else {
GeTuiSdk.setPushModeForOff(true);
}
}
}
export default {
igexinTool
}
在退出账号的方法里面加上调用即可
在登录之后,调用方法里面的turnOnPush即可收到推送消息
注:uni.offpushmessage关闭不了离线消息
此处我要在此特别感谢个推的技术支持-凡,感谢他很耐心的帮我解决问题,我走的这些弯路希望可以帮助到你们。只是分享,不喜勿喷。