uni-push 2.0 云函数url化使用说明

uni-push2.0官方文档地址:

https://uniapp.dcloud.net.cn/unipush-v2.html

官方文档好好看,你就可以完成一个最基础的推送功能,如果你想让你的服务器端对你客户端进行推送的官方的集成文档还是不够的,你可以按照我下面的步骤进行设置。

你按照官方的文档集成完毕后应该会在uniCloud/cloudfunctions/你自己的云函数名称,这个文件夹下会有两个文件index.js 和 package.json。
第一步: 去掉package.json中对uni-cloud-push的注释,这个问题就很诡异有注释的话调用云函数会报错,官方的文档中也提到了但是当时没看到。
第二步: 修改你index.js中的内容,以下是我写的代码内容,按理说是通用的。

'use strict';
function uniPush(appId) {
	return uniCloud.getPushManager({appId})
}
exports.main = async (event, context) => {
	var body = event.body
	var data = {}
	if(body){
		data = JSON.parse(body)
	}else{
		return {"code":-1,"msg":"请使用post请求data传参","event":JSON.stringify(event)}
	}
	const appId = data.appId
	data.must_report = true //默认为false,消息接受者为单设备时,不统计推送结果。开启此项将都会统计。但整体推送速度会慢100-500毫秒
	let res = await uniPush(appId).sendMessage(data)
	return res
};

我这个云函数需要时post的方式进行请求,不支持get的请求方式,这里给大家说一下get和post请求云函数url化的区别,使用post方式进行请求时你填写的请求参数会放到event.body中,但是这个body是String格式的需要你自己进行一次转换才能去调用sendMessage方法,而get请求时你的参数会放到event.queryStringParameters中,这个queryStringParameters是json格式的不需要再进行转换就能调用sendMessage方法。
说到这里大家可能会感到好像使用get方法更方便一点,但是我在实际使用过程中发现使用get方法进行接口调用没办法做到push_clientid数组形式的传递,因为通过get传过来的数据是个String,你还得把push_clientid进行一次转换才能去调用sendMessage方法,我觉得这个样子太麻烦了,所以我写的云函数就只支持了post请求。

第三步: 右键你的云函数,选择上传部署,然后你就可以使用url化的云函数进行调用了。

uni-push2.0中用到了云函数和云函数url化,这两个东西有人可能用过但是更多的人应该还没接触过,我就不多说了,你们自己去uni-app的文档中找一找把。

其他:
如果你想让你的推送消息更加的完善,你除了需要开通应用厂商的离线通知以外还需要开通应用厂商的通知渠道,因为如果你不开通通知渠道,国内的应用厂商基本上会把你的通知消息认定为不重要的消息,在华为中这种消息叫做营销通知(每日限量两次)、小米叫做普通消息(次数受限)、oppo叫做公信消息(次数受限)、vivo叫做运营消息(次数受限),所以要想更好的使用通知消息你就需要开通这四大应用厂商的渠道消息,下面是uniapp官方的链接:

https://uniapp.dcloud.net.cn/uniCloud/uni-cloud-push/api.html#channel

你可能感兴趣的:(uni-app,json,javascript,前端,uni-push2.0)