uni-app官网
介绍业务、开通流程,请务必仔细阅读 UniPush使用指南 - DCloud问答
开通的unipush是封装了个推SDK,但Dcloud平台没有技术联系方式,他们技术支持是付费的,所以我们个推这边也会关注下unipush用户的集成情况,给予技术上的协助。
这里是完整的技术文档,请仔细研读:
UniPush使用指南 UniPush使用指南 - DCloud问答
Unipush常见问题 Unipush常见问题 - DCloud问答
Unipush咨询入口:DCloud问答
服务端api接口推送调用文档
推送API-个推文档中心
可联系管理员进微信技术群
重点来了~~~
unipush 信息推送,需要前端获取到app的cid,后端通过cid推送给对应的app,
点此查看如何开通UniPush推送服务
注意:开通UniPush后,需在后台配置“厂商推送设置”,配置好厂商参数后请一定要提交云打包,并且使用“自有证书”打签名包;将云打包后的安装包安装到手机上,再获取cid 进行离线厂商推送测试,不可使用基座方式获取的cid进行离线厂商推送测试。
获取手机厂商推送设置信息请参考:厂商推送应用创建配置流程
document.addEventListener('plusready', function(){
// 页面加载时触发
var pinf = plus.push.getClientInfo();
var cid = pinf.clientid;//客户端标识
}, false );
// 点击推送信息 离线
plus.push.addEventListener('click', res => {
//模板消息
console.log('push--->click');
});
// 接收推送信息 在线
plus.push.addEventListener('receive', res => {
console.log('push--->receive');
});
app.vue
app.vue
unipush-listener.js
unipush-listener.js
/**
* 监听push 消息 以及后台数据恢复
*/
import store from '@/store'
let timer = false;
var numloop = 0;
export default {
// 开启监听推送
pushListener() {
console.log('pushListener=================pushListener');
// 点击推送信息 离线
plus.push.addEventListener('click', res => {
//模板消息
console.log('push--->click');
this.addEventListenerPushMessage(res, 'click');
});
// 接收推送信息 在线
plus.push.addEventListener('receive', res => {
console.log('push--->receive');
this.addEventListenerPushMessage(res, 'receive');
});
},
// 点击click方法,获取push数据,判断是否登录,进行跳转
addEventListenerPushMessage(push, type) {
console.log("push, type", push, type);
clearTimeout(timer);
timer = setTimeout(function() {
var row = push.payload;
console.log(JSON.stringify(row), "JSON.stringify(row)");
if (store.state.user.token) {
if (row.id) {
uni.navigateTo({
url: '/packagehome/pages/task/TodoList?row=' + JSON.stringify(row)
})
} else {
uni.reLaunch({
url: '../index/index',
});
}
} else {
uni.reLaunch({
url: '/pages/login/login'
});
}
}, 1500)
},
// 循环获取clientid信息,直到获取到为止
getClientInfoLoop() {
plus.push.getClientInfoAsync(function(info) {
console.log("info", JSON.stringify(info));
console.log(info);
console.log(info.clientid);
console.log(!info || !info.clientid, (info && info.clientid ? true : false));
// 如果info不存在,或者info存在,cid不存在则再次获取cid
if (!info || !info.clientid) {
console.log("cid为空=========================================");
let infoTimer = false;
infoTimer = setInterval(function() {
console.log('setInterval======');
console.log('numloop======', numloop++);
// 同步获取cid
var pinf = plus.push.getClientInfo();
var cid = pinf.clientid; //客户端标识
console.log(pinf, cid, cid ? true : false);
if (cid) {
clearInterval(infoTimer); //清定时器
uni.setStorageSync('cid', cid); // 储存cid
console.log(uni.getStorageSync('cid'), '储存的cid======');
// this.passCid(cid); // 向后台传送cid
// 是否有cid,登录的时候上传后台,否则首页上传
var havecid = uni.getStorageSync('havecid');
console.log('havecid', havecid, cid);
console.log(!havecid && cid)
if (!havecid && cid) {
this.$http.get('/sys/updateCid?clientId=' + cid).then(({
data
}) => {
console.log(cid, 'passCid,向后台传cid========2data', data);
if (data.success) {
uni.setStorageSync('havecid', true);
}
})
}
}
}, 100);
} else if (info && info.clientid) {
// 储存cid
var cid = info.clientid;
uni.setStorageSync('cid', cid);
console.log(uni.getStorageSync('cid'), '本地储存cid======');
// this.passCid(cid); // 向后台传送cid
// 是否有cid,登录的时候上传后台,否则首页上传
var havecid = uni.getStorageSync('havecid');
console.log('havecid', havecid, cid);
console.log(!havecid && cid)
if (!havecid && cid) {
this.$http.get('/sys/updateCid?clientId=' + cid).then(({
data
}) => {
console.log(cid, 'passCid,向后台传cid========2data', data);
if (data.success) {
uni.setStorageSync('havecid', true);
}
})
}
}
}, function(e) {
console.log('Failed', JSON.stringify(e));
// 同步获取cid
var pinf = plus.push.getClientInfo();
var cid = pinf.clientid; //客户端标识
if (cid) {
// 储存cid
uni.setStorageSync('cid', cid);
console.log(uni.getStorageSync('cid'), '======');
this.passCid(cid); // 向后台传送cid
}
})
},
// 向后台传送cid
passCid(cid) {
// 是否有cid,登录的时候上传后台,否则首页上传
var havecid = uni.getStorageSync('havecid');
console.log('havecid', havecid, cid, !havecid && cid);
if (!havecid && cid) {
this.$http.get('/sys/updateCid?clientId=' + cid).then(({
data
}) => {
console.log(cid, 'passCid,向后台传cid========2data', data);
if (data.success) {
uni.setStorageSync('havecid', true);
}
})
}
},
// // receive,接收到推送信息,前端创建推送信息
// addEventListenerReceive(push, type) {
// console.log("push, type", push, type);
// clearTimeout(timer);
// timer = setTimeout(function() {
// plus.push.createMessage(push.content,push.payload,push.options);
// }, 1500)
// },
}
{
"request_id":"请填写10到32位的id",
"audience": {
"cid": [
"请填写clientid"
]
},
"settings":{
"ttl":3600000,
"strategy":{
"default":1
}
},
"push_message":{
"transmission":" {title:"标题",content:"内容",payload:"自定义数据"}"
},
"push_channel":{
"android":{
"ups":{
"notification":{
"title":"安卓离线展示的标题",
"body":"安卓离线展示的标题",
"click_type":"intent",
"intent":"intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end"
}
}
},
"ios":{
"type":"notify",
"payload":"自定义消息",
"aps":{
"alert":{
"title":"苹果离线展示的标题",
"body":"苹果离线展示的内容"
},
"content-available":0
},
"auto_badge":"+1"
}
}