一、缺少信息:
1、需要app持有人在开发者中心为应用配置推送服务,
2、ios需要申请推送证书并在个推上传证书,已申请p12测试和正式证书
3、离线推送需要上架到对应厂商的应用商店,获取上架app的信息,在开发者中心填写厂商信息
二、常见问题
有了uni-push,开发者不应该再使用其他push方案了。但我们发现很多开发者有误解,导致还在错误使用其他推送。
1、常见误解1:“uni-push的专业性,和专业的个推、极光等服务可相比吗?”
答:uniPush 是由个推将其本来收费的 push 产品,免费提供给了DCloud的开发者。它与个推vip push的只有3个区别:1、免费;2、账户使用的是DCloud开发者账户,而无需再重新注册个推账户;3、开发文档看DCloud的。
2、常见误解2:“uni-push好麻烦,我就喜欢个推、极光这种简单sdk,不想去各个rom厂商去申请一圈”
答:uni-push不建立在申请手机厂商授权的基础上,如果你不申请那些,使用起来和用普通的push是一样的。但是要特别注意,推送行业的现状就是:不集成rom厂商的推送,就无法在App离线时发送push。按照普通push模式使用,后果就是在华为、小米、OPPO、VIVO、魅族上发不了离线消息。
3、常见误解3:“uni-push的送达率高吗?是否可以付费来提升送达率,个推是有付费提升送达率的方法的”
答:前文已经说了。个推的付费提升送达率的产品就是vip push,而uni-push就是个推的vip Push。DCloud通过谈判免费给DCloud的开发者使用了。
4、uni-push可以完整替代socket吗?
答:能部分替代。uni-push客户端接收消息的通讯协议属于websocket;但业务服务端向uniPush服务发送消息用的是http通讯协议,会有1-2秒的延时。需要超低延迟的应用场景,如多人交互远程画板不合适。但对于普通的im消息、聊天、通知都没有问题。
5、5+app和wap2app支持uni-push2.0吗?
答:暂不支持。
1、开通:uni-push2统一推送 | uni-app官网 (dcloud.net.cn)
2、客户端api开发文档:uni-app官网 (dcloud.net.cn)
3、服务端api开发文档:uni-app官网 (dcloud.net.cn)
4、博客使用说明:uniapp 使用 uni push 2.0 推送消息unipush离线推送全智能时代的博客-CSDN博客
5、开始使用基本操作:uniPush2.0 消息推送_没有白天的CXY的博客-CSDN博客
6、推送上架及使用注意点:uniPush2.0云函数_前端技术铺的博客-CSDN博客
三、uniPush会遇到哪些坑?
1、消息推送功能只有应用所有者才能开通,协作者没有权限。
2、消息推送功能需要在manifest.json文件中配置好AppID和AppKey,以及其他相关参数,否则会导致推送失败。
3、消息推送功能需要在应用启动时调用uni.push.createMessageClient方法,初始化推送客户端,否则会导致推送失败。
4、消息推送功能需要在应用中监听uni.push.onMessageReceived事件,处理收到的推送消息,否则会导致推送消息无法显示或者跳转。
5、消息推送功能需要在应用中设置好标签或者别名,以便于后台系统根据目标用户发送推送消息。
6、消息推送功能需要在后台系统中使用正确的API或者SDK,以及正确的参数,发送推送请求,否则会导致推送失败或者错误。
7、消息推送功能需要注意不同平台和设备的兼容性和限制问题,比如iOS设备需要开启通知权限,Android设备需要适配不同的厂商通道等。
四、uniPush如何填坑?
1、参考官方的文档和示例,按照步骤正确地配置和使用uniPush模块和API。
2、参考网上的教程和经验,注意一些细节和注意事项,比如manifest.json文件的格式,推送消息的内容和类型,标签和别名的设置等。
3、使用DCloud开发者中心或者自己的后台系统,测试推送功能是否正常工作,查看推送日志和统计数据,排查错误和问题。
4、在不同的平台和设备上测试推送功能,检查兼容性和限制问题,比如iOS设备的通知权限,Android设备的厂商通道等。
五、uni-push2.0怎么将推送云函数url化并在自己的后台使用
网站:unipush2 服务端调用推送 - 非你网 (vini123.com)
1、新建云函数
1.1 创建云开发环境,关联云服务空间
鼠标放在项目名称上,右键选择 创建uniCloud云开发环境,选择 阿里云。选择什么云,和你在 dcloud 后台创建关联的云一样就可以了。先默认创建一个云开发环境。
1.2 创建云函数
1.3 配置和编写云函数
package.json
{
"name": "unipush",
"version": "1.0.0",
"main": "index.js",
"description": "消息推送",
"extensions": {
"uni-cloud-push": {}
},
"author": "vini123"
}
index.js
'use strict';
exports.main = async (event, context) => {
let body = event.body;
if (event.isBase64Encoded) {
body = Buffer.from(body);
}
if(!body) {
return { message: 'no body'};
}
const param = JSON.parse(body);
// 云函数是通用的,和项目没有直接的关系。通过传递 appId,可以为多个项目进行推送
const uniPush = uniCloud.getPushManager({
appId: param.appId
});
return await uniPush.sendMessage({
"push_clientid": param.push_clientid,
"title": param.title,
"content": param.content,
"payload": param.payload,
"force_notification": true,
"request_id": param.request_id,
"badge": param.badge
});
};
1.4 上传和运行云函数。因为该函数写了需要接受参数,不方便直接运行。如果想直接运行,将上边的参数直接写死。直接 send。鼠标右键上传并运行 就好。这里是动态的,仅仅上传部署就好了。
同名函数会相互覆盖。记得记得。所以这里 unipush 就要做一个通用的。(未关联云服务空间是不能上传的,先进行关联)