uniapp集成unipush2.0

unipush2.0集成

unipush推出2.0服务,之前一直用的1.0,现在项目推荐使用2.0,最近也是对2.0这个推送做了测试,下面就主要对华为这个来总结一下,其余的厂商大同小异

1.push1.0和2.0对比

个人理解,2.0比1.0升级之处在于:1.支持全端推送,小程序和h5端 ;2.不在使用后端集成个推那些api了,换句话说也就是解放了后端,活都前端来干,只需要将云函数url化,给后端这个url就行;3.还是要集成各大厂商的SDK,这点和1.0一模一样,绕不过的,4.就是要调用云函数,要收费,虽然很便宜,但是要再买一个云服务器,有点扯

2.购买云服务器,配置云服务器

去unicloud官网,申请一下,免费购买一个月的阿里云服务器就行,免费的

3.客户端集成

  • 1.配置文件中勾选push2.0

在这里插入图片描述

  • 2.点击配置,跳转到unicloud开发者中心进行配置,包名直接在应用管理里面的应用哪里设置,然后选择,并关联你上面申请的阿里云服务器

在这里插入图片描述

  • 3.重点讲一下这个通知消息和透传消息

在这里插入图片描述
好多人这里搞不明白,也懒得官方文档,或者看了也不懂,这里简单区分一下这2个
1.通知消息:这个就是app在线的时候,通过个推渠道下发到手机上面的,只在app在线起作用
2.透传消息:这个就是app离线的时候,通过厂商渠道发送的intent通知重点:需要配置厂商,app离线
也就是说,app在线走个推渠道,离线会走厂商推送,接下来就说一下怎么配置这个厂商渠道来实现Intent通知

  • 4.配置厂商渠道,按照指示到华为官网新建项目和应用,并开通push服务,在配置信息中填写包名,这个包名别填错了,然后把app打包生成的密钥复制过去(连密钥怎么生成都不知道的话,就多去官网看看文档),然后按照步骤一步一步来,配置厂商这里没什么难度,小米 oppo vivo需要在各自应用商店上架,否则配置不了
    -重点 如何确保自己厂商服务已经配置完成,没有出现问题???
    1.我们测试的时候都是用的自定义基座测试,但是自定义基座是无法激活厂商服务的,官方说的打正式包,我更喜欢说是激活,如何激活这个服务,将配置好的厂商服务app直接提交云打包,然后安装并启动app
    2.如何测试:安装完成之后,卸载app,再次用自定义基座获取cid(不知道怎么获取cid,自己去看文档),拿到这个cid到unicloud控制台,打开故障排除,输入cid,出现device token才算是配置完成了

在这里插入图片描述
在这里插入图片描述
接下里就是测试厂商服务:
intent通知格式:这里面把你的包名替换一下就OK

intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component你的包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end

在这里插入图片描述
此时关闭的app,你的app就会收到一条通知消息,这个就是用控制台推送和测试,没什么难度,细心点一步一步来就明白了

4.服务中集成使用云函数

截至这里,上面的配置和1.0的配置一模一样,没有什么区别,开头就说了,2.0不需要服务端写代码了,而且前端使用云函数完成推送,这里就教大家怎么引入云函数并完成配置
1.点到项目,右键创建云开发环境,选择你购买的云服务器
在这里插入图片描述

2.关联你的云服务
在这里插入图片描述
3.右键你的云服务,选择创建云函数,随便起个名字,那个test-data就是我创建的云函数
在这里插入图片描述
4.在你的云函数中引入uni-cloud-push这个扩展模块
在这里插入图片描述
5.然后到你的云服务中,的云数据库中创建3张数据库表,扩展库依赖 3 张 opendb 表:opendb-tempdata,opendb-device,uni-id-device
在这里插入图片描述
这三张表的作用
在这里插入图片描述

6.好,到这一步就算配置的差不多了,现在来进行测试云函数,到你的创建的云函数的index.js文件执行以下代码
zhe’li

'use strict';  
const uniPush = uniCloud.getPushManager({appId:"你的appid"}) //注意这里需要传入你的应用appId  
exports.main = async (event, context) => {  
    return await uniPush.sendMessage({  
        "push_clientid": "cid",     //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid  
        "force_notification":true,  //填写true,客户端就会对在线消息自动创建“通知栏消息”。  
        "title": "通知栏显示的标题",      
        "content": "通知栏显示的内容",  
        "payload": {  
            "text":"体验一下uni-push2.0"  
        }   
    })  
};

这里麻烦改一下你的appid和cid可以吗 ok不ok
在这里插入图片描述
7.上传并允许该云函数

8.此时无论app在线还是离线都可以测试并获取到消息,是内置的云函数帮我们完成功能,如果这一步出错的话,可以到云服务器查看云函数的日志
在这里插入图片描述
9.云函数url化,并向改url发送请求测试,这里多说一句,这里域名是可以绑定自己的域名,至于如何绑定,点击那个连接自己看
在这里插入图片描述
10.postman测试该url,模拟后端获取到数据,向云服务器中云函数发起请求
将云函数的index.js换成以下代码:

// 简单的使用示例  
'use strict';  
const uniPush = uniCloud.getPushManager({  
appId: ""  
})  
exports.main = async (event) => {  
let obj = JSON.parse(event.body)  
console.log(obj)
const res = await uniPush.sendMessage({  
"push_clientid": obj.cids, // 设备id,支持多个以数组的形式指定多个设备,如["cid-1","cid-2"],数组长度不大于1000  
"title": obj.title, // 标题  
"content": obj.content, // 内容  
"payload": obj.data, // 数据  
"force_notification": true, // 服务端推送 需要加这一句  
"request_id": obj.request_id //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失   
    })  
};

然后并上传部署该云函数
在这里插入图片描述
部署完成,拿到刚才那个url到postman中测试

{  
"cids": "",  
"title": "url化好聊聊玩",  
"content": "11900099099 ", 
"options": {  
"HW": {  
"/message/android/category": "WORK"  
}  
},    
"date": {  
"date1": 1,  
"date2": 2  
},  
"request_id": "2121111"  
}

在这里插入图片描述
11.好了,到这完结撒花

5.总结

总结这个过程中可能会遇到bug
1.Q:app离线消息,一会收到一会又收不到了,厂商服务已经配置,而且已经获取到token
A:这个是遇到最多的bug,这个也不算是bug,unipush的推送消息默认是静默通知,各大厂商对这种消息默认是属于营销类的消息,一天上限2条,如何破解,自己去看文档
https://docs.getui.com/getui/mobile/vendor/qps/在这里插入图片描述
2.目前遇到最多的也就是第一个问题,其余问题网上搜一下,都有答案,或者多看看官方文档,角标的问题,自己看文档,一个参数搞定
https://uniapp.dcloud.net.cn/uniCloud/uni-cloud-push/api.html

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值