将常用的网址一定要收藏在标签栏中,方便后期找,不然后期会很生气。
草料二维码,这个在线工具可以将打包生成的apk文件生成二维码,供测试人员测试。生成的apk只有五次下载机会,可点击链接后的一键上传,这样就可以下载很多次了。
一、厂商推送配置
uni的开发者后台
1. 华为
华为-推送服务官网
点击华为推送服务的官网->立即接入。
jdk生成的证书是自有证书,推送服务必须使用自有的证书
Android平台签名证书(.keystore)生成指南
生成证书后,遇到一个问题,因为我之前上架APP时都是使用的默认的证书,生成这个证书后上架总是失败,后来咨询了专业人士,说是重新生成证书后所有的APP必须重新上架一遍,所以如果后续您的APP上架总是被驳回可以考虑是证书修改的原因。
2. 配置厂商信息
将上一步中生成的内容都复制到这一步即可。
配置厂商总共配置两部分,一个是uniClound的,一个是个推网站的。
uniClound厂商配置
个推厂商配置
2. 荣耀
荣耀-推送服务后台
荣耀和华为的操作几乎是一样的,SHA256证书指纹也是需要录入2个。
3. 小米
小米-推送服务后台
找到应用,点击【启用推送】
小米的需要审核,审核通过后点击【应用信息】,进行厂商配置。
4. OPPO
oppo官网
进入官网后,搜索推送服务,点击对应应用进行配置。配置成功后进行厂商配置。
5. VIVO
vivo-推送服务后台
进行推送申请,申请成功后,进行厂商配置。
二、前端准备实现推送服务
1. 特别说明的两款应用
(1)vivo: vivo进行测试时,需要在平台配置测试设备。其他厂商的手机不需要。
(2)小米的消息分类需要到平台申请,小米生成的id后续代码中需要。
2. 对于中途遇到的任何问题,请专心读文档,答案都在文档里。文档就是一些嵌套的关系,看到可以点的,都可以点开看一下。
3.正式开始实现推送服务
云函数配置
点击上边的链接,根据步骤先创建uniClound中创建云函数。
目录结构:
代码如下:
1. 获取cid,cid每重新安装一次更新一次。
uni.getPushClientId({
success: (res) => {
uni.setStorageSync("push_client_id", res.cid);
uni.showModal({
title: '提示cid',
content: uni.getStorageSync("push_client_id"),
})
},
fail(err) {
console.log(err)
}
})
2. 启用服务端,生成服务函数。
内容一旦有修改,都要进行重新上传并运行。
// index.obj.js
const uniPush = uniCloud.getPushManager({
appId: "__UNI__D940142"
});
module.exports = {
async Alarm(params) {
if (!params.title || !params.content) {
return {
errCode: 'INVALID_TODO',
errMsg: 'TODO标题或内容不可为空'
}
}
await uniPush.sendMessage({
"push_clientid": params.cid,
"title": params.title,
"content": params.content,
"payload": params.payload,
"force_notification":true,
"options": {
"HW": {
"/message/android/notification/importance":"NORMAL",
"/message/android/category":"WORK",
"/message/android/target_user_type":1
},
"HO": {
"/android/notification/badge/badgeClass": "/pages/login/login",
"/android/ttl": "86400s",
"/android/notification/importance": "NORMAL",
"/android/targetUserType": 1
},
"XM": {
"/extra.channel_id": "122248",
"/time_to_live": 86400000
},
"OP": {
"/channel_id": "Default",
"/off_line": true,
"/off_line_ttl": 86400
},
"VV": {
"/category": "TODO",
"/classification": 1,
"/timeToLive": 86400
}
}
});
return {
errCode: 0,
errMsg: '创建成功'
}
}
}
// 调用的文件
Alarm({
cid: "c1de8afcab10e20b3e9777872f115f68",
title: "新消息来了",
content: "转开了,离线的收到了吗?",
payload: {
text: "牧场最新配置"
}
});
3. 鼠标移动到如图位置,鼠标右键,点击上传运行。现在还不会出现内容。
发送了消息,需要前端页面进行监听。
如果上传报错,请查看指南
4. 前端页面监听推送,生成推送卡片。
monitorPushMessage() {
// 监听推送消息(透传消息,不是手机下拉展示的)
console.log("监听推送消息(透传消息,不是手机下拉展示的)");
uni.onPushMessage((res) => {
console.log("监听内容",res);
// 接收到了新数据
if(res.type === "receive") {
// 创建消息推送
uni.createPushMessage({
title: res.data.title,
content: res.data.content,
payload:res.data.payload,
success: (s)=>{
console.log("推送成功了",s);
},
fail: (err)=>{
console.log("推送失败了",err);
}
})
} else if(res.type === 'click') {
// 点击了消息推送框
uni.switchTab({
url: "/pages/tabbar/A/B"
})
}
})
}
5. 代码进行云打包。
6. 运行云函数,接收推送消息。
如果此刻,您没有收到消息,就要进行排查问题了。
打开 开发者中心,找到【消息推送-故障排查】将当前手机的cid输入进去进行查询,
如果返回了 Device Token就说明这台机子没问题
- 有可能是厂商参数配置有问题,需要阅读文档,进行配置。
- uniclound厂商参数配置
- 个推厂商通道配置
- 小米手机、vivo手机要特别注意通知设置,关闭智能通知等筛选性的功能。
如果没有的Device Token话: 配置的问题。
- 查看配置问题
因为我是整个流程结束,调通之后才进行的整理文章,可能有遗漏部分,如果您有任何疑惑,请留言。看到了我会及时回复。