您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
unipush推送006-全端推送(unicloud全栈前端)
发布时间:2024-08-29 09:33:53编辑:雪饮阅读()
-
方案选择
上篇中通过安装java环境获取了自定义证书的sha1和sha256的方式可以使用老项目证书而兼顾旧的证书来实现推送。
但现在有一个问题,我们一般做推送都是后端来推送,按照以往经验,我是对接过极光推送,是有后端接口或者sdk可对接,那么对于unipush则也是同样,它实质是利用个推,但个推对于php没有sdk,只有java有。另外直接使用个推据uniapp上面的文章介绍是挺复杂不是很建议,并且说是要使用uniapp+unipush1.0的时候的选择,但我现在是uniapp+unipush2.0,虽然uniapp上面有介绍到如果使用unipush2.0则是在uniappx情况下搭配使用。。。以及现在已经使用了unicloud的情况下所以综合考虑之下,还是用unicloud的方案比较好。
普通uniapp项目“转”unicloud项目
然而unicloud方案是你的项目建立时候是基于unicloud也就是全栈前端建立的,而不是纯粹的uniapp,那么我想到的一个方法就是新建一个unicloud项目,然后把unicloud项目里面的“uniCloud-alipay”拷贝到我们的uniapp项目根目录。
这里uniCloud-alipay好像是默认的,在hbuilder中显示名为“uniCloud”如果你在资源管理器中查看显示的就是“uniCloud-alipay”,那么其实拷贝到你的项目中后在huilder中鼠标右键“关联云服务空间”,这里我关联的是我之前的那个阿里云服务空间。
这样一来就和unipush2.0前篇中我们选择的服务空间一致了。紧接着你会发现资源管理器里面的文件夹就变成了uniCloud-aliyun了。
创建数据表
接下来我们为了要实现后端推送,我们按unipush2.0的文档,是需要先建立几个数据表的。属于是opendb的数据表。
当然第一次肯定是要先鼠标右键里面的云服务空间初始化后,在鼠标右键打开unicloud web控制台。
来的unicloud web控制台后,我们点击云数据库去新增数据表
这第一个表勾选表分类uni-id里面会出现该分类的数据表列表,然后进一步勾选uni-id-device这个数据表。
然后右下角创建选中的opendb表。
同样的操作,我们第二个表是opendb-admin分类下的opendb-device,第3个表是其他分类下的opendb-tempdata
数据表创建完成后,我们可以回到刚才的unicloud模块里面database文件夹右键“下载所有DB Schema(含扩展)”,这样的做法我觉得应该是可以为未来假如你更换了项目重新到新的服务空间时候可以不用创建这些表,直接同样的右键“上传所有DB Schema(含扩展)”。
创建云函数向导
接下来我们需要创建云函数来通过服务端向客户端进行推送。
在unicloud模块的cloudfunctions文件夹右键“新建云函数/云对象”新界面中默认是新建云函数被单选。
输入函数名称,一般肯定是英文名。
模板也就按默认选择的“默认模板”
点击“添加公共模块或扩展库依赖”新弹窗里面“选择要添加的unicloud扩展库”,我们就选择uni-cloud-push,“选择项目下的公共模块”哪里就先不管,直接确定。
然后回到上个新建云函数的窗口,直接点击创建。
那么由于我的云函数名称设置为phpToMe,所以我新生成的云函数主路径就是在unicloud模块下cloudfunctions文件夹下的phpToMe文件夹里面的index.js。
Unipush2.0推送
但是默认生成的这个云函数还并没有包含我们的服务端推送到客户端的逻辑,所以我们修改后如:
'use strict';
//这个appid就是我们uniapp项目manifest.json视图模式下“基础配置”uni-app应用标识(APPID)
const uniPush = uniCloud.getPushManager({appId:"__UNI__0A1E732"})
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
return await uniPush.sendMessage({
//填写上一步在uni-app客户端获取到的客户端推送标识push_clientid
"push_clientid": "f62d40b2f5a5ed66d004eeb7a202cfb5",
//填写true,客户端就会对在线消息自动创建“通知栏消息”。
"force_notification":true,
"title": "通知栏显示的标题",
"content": "通知栏显示的内容",
"payload": {
"text":"体验一下uni-push2.0"
}
})
};
这个函数里面appid暂时先写固定的。
然后可以在该云函数名称所在的文件夹上面右键“运行本地云函数”,当然也可以“上传并运行”
这个时候即便你的客户端是离线的,那么其实当它上线后(进入app),就会自动在通知栏看到了。我这里连续出现了两个通知,因为我本地和上传并运行都执行了一次。
至于离线后重新上线又能在通知栏看到,我之前在app.vue中的onLaunch里面有调用如下语句
console.log('App Launch')
uni.onPushMessage((res) => {
console.log("收到推送消息:",res) //监听推送消息
})
不过看起来应该不是这个的影响。可能原本就已经实现了。
关键字词:unipush,unicloud,推送,全栈
相关文章
- uniapp推送教程005自定义证书sha1与sha256
- uniapp推送教程004在线推送的预览与通知栏图标
- uniapp推送教程003-创建消息于本地通知栏
- uniapp推送教程002通知权限手动都无法勾选?(安卓13的权
- uniapp如何做推送?unipush2.0使用教程001获取推送id
- 33_尚硅谷_Docker_本地镜像推送到阿里云
- 解決sourceTree提交推送時候出現錯誤Access deined au
- workerman也能玩二進制流workerman推送圖片音視頻實例
- 解決sourceTree突然無法推送到一個可讀可寫的公共碼雲
- workerman常用组件-channel分佈式通訊組件-channelCli