uniapp unipush个推解决方案

uniapp 的unipush现在有一个2.0需要上云,我在做个人推送的时候需要在服务端进行获取信息并进行消息推送(默认已经开通了unipush)。因此在这边做一个记录以及遇到的坑。

但是在服务端直接调用api接口似乎需要在个推平台上进行申请什么的,挺麻烦的还有收费,就没太了解。

因此在这边采用了另一种方式进行用户个推,即在自己的服务端(我这边是django写的)来调用云函数api,在云函数里面进行unipush。

首先需要在uniapp上创建unicloud,具体详情见大佬所写uniapp 如何创建及使用unicloud云开发-CSDN博客

在创建完unicloud后需要自己创建一个云函数,然后代码如下:

'use strict';
const uniPush = uniCloud.getPushManager({appId:"__UNI__XXXXXXX"})
exports.main = async (event, context) => {
	//event为客户端上传的参数
	console.log('event : ', event)
	await uniPush.sendMessage({
		"push_clientid":"XXXXXXXXXXXXXXXXXXXXXXX",
		"title":"TEST",
		"content":"云对象推送内容",
		"payload":{
			"text":"云端推送IFP消息",
			"id":123
		}
	})
	//返回数据给客户端
	return 'yes'
};

其中appid是你的uniapp的appid,这里的push_clientid是软件在设备上的cid,可在开通unipush后在app.vue中的onLaunch写下如下代码查询:

uni.getPushClientId({
				success:res=>{
					console.log(res);
					console.log(res.cid);
				}
			})

在云函数上传成功后可在云函数控制台里面找到这个函数,点击详情并进行云函数url化

python的django调用api,这边不用做多介绍,我直接用apifox进行接口调试

在调试后会报”mongo_cell_decision_not_found“错误,在查找相关资料后发现说,扩展库依赖3张opendb表:opendb-tempdata,opendb-device,uni-id-device。公测版uniCloud,执行扩展库会自动创建。如果你使用的是uniCloud正式版需要自己创建这3张表。

因此需要返回uniclod中的database创建opendb-tempdata,opendb-device,uni-id-device三个表并上传部署。

之后再进行apifox的接口调试便成功了,可在App.vue里面调用uni.onPushMessage来进行查看

uni.onPushMessage(res=>{
				console.log(res)

			}) 

可见收到了推送消息,如果想在消息栏提醒,可用uni.createPushMessage进行提醒,这边便不做过多阐述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值