unipush 2.0流程及踩坑记录(后端调用接口,前端推送)

unipush 在线离线示例

在DCLOUD开发者中心里面创建unipush的应用

如果遇到选择Android 包名后没有自动生成Android 应用签名的话,就是下图这样的。

这个情况多半就是通过直接创建云端证书造成的,没有编辑应用信息

没有云端证书的看这里

在我的应用,找到需要unipush的应用,点击编辑,然后把云端证书里面的内容填进去就好了

云服务空间,直接按照操作搞吧,这个不是我搞得。关联好后然后点击开通

在hbuilder里面找到项目,鼠标右键点击项目名称,创建云函数

这一步可以看官方文档,挺详细的。一定要好好写这一步,然后后端请求接口的时候才会有回调

添加push模块,设置targetSdkersion(targetSdkersion过高有些手机运行不了)

找到刚刚添加的push模块,设置云函数(下面是我的代码截图,上面是官方截图,所以文件名不一样,但是内容都是一样的)

'use strict';
const uniPush = uniCloud.getPushManager({
	appId: "__UNI__A4C6D3499"
})
exports.main = async (event) => {
	let obj = JSON.parse(event.body)
	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重复,会导致消息丢失   
	})
	return res   //一定要return回去
};

 最后上传部署

在app.vue里面写入这个两行代码,一个是点击推送消息的事件,一个是获取用户cid信息(用于给指定用户推送,例如聊天信息,订单信息,都是指定用户)。然后一定要先检测系统权限,直接复制这个大佬的代码 。有些手机首次进入又会自动提醒是否消息通知,这个自己搞搞兼容吧。自定义基座需要手动打开这个权限。 链接地址

// #ifdef APP-PLUS
			plus.push.addEventListener("click", function(msg) {
				console.log(msg);
				uni.switchTab({
					url:'/pages/user/index'
				})
			}, false);
			uni.getPushClientId({
					su***ess: res => {
						console.log(res.cid);
					}
				})
				this.getQuanxian()
			// #endif

获取通知权限还有一个方法就是官方文档

// #ifdef APP-PLUS 
			const notificationAuthorized = uni.getAppAuthorizeSetting().notificationAuthorized
			if(notificationAuthorized=='denied'){
				uni.showModal({
					title: '提示',
					content: '是否前往打开通知权限',
					su***ess: res => {
						if (res.confirm) {
							this.openTongZhi()
						} else if (res.cancel) {
							console.log('用户点击取消');
						}
					}
				})
			}
			// that.getQuanxian()
			// #endif 

然后勾选配置文件(如果要配置离线,请先看离线通知标题那部分)

有些手机运行自定义基座失败,这个设置成28试一下

打自定义基座包,然后运行

然后打包一定是自定义基座才能本地调试

检测基座

运行自定义基座之前,得先卸载手机里面之前所有相关应用,然后拿到cid检测一下,能获取到信息就好了

配置云函数url化(作用是,后端直接调接口然后进行推送)

这个参数就是一一对应的!!!

设备在线离线都是走这个接口!!!

离线自定义铃声

我搞的时候,小米不支持,然后主要是为了离线通知有声音

自定义推送铃声和渠道 - DCloud 插件市场

导入插件后使用

channelId是

要是没有声音 soundName设置成"", 只要导入了这个 有系统铃声就认命吧

离线通知(app需要上线的话看这个吧)

配置文件搜索

直接到每个厂商平台,上图注意事项那里有厂商地址。搜索消息推送开通就好了,我们是大多平台都先上线了的。华为可以不用上线,直接申请。

像华为这种,你直接找对应字段填进来就好了。

总结及遇到的坑

0.在dcloud里面,创建unipush2.0的时候,找到Android 包名但是没自动生成Android 应用签名。

点击修改完善一下

1.先勾选unipush2.0 不搞离线推送,然后在app.vue里面获取cid好测试。然后创建云函数。

2.自定义基座不能运行:卸载之前手机上所有相关的包,重新运行。要不然就是targetSdkersion设置低一点。

3.后端发送请求时没有反应或者报错:没有反应可能是uniapp云函数那里配置有问题,或者是get请求或者post请求都可以,只是请求体不一样。然后就是云函数接受的地方和发送请求的地方参数得一样哦

4.没有收到推送消息:先看手机消息通知权限是否打开啊,然后打开app找到通过uni.getPushClientId获取的cid,然后去dcloud里面检查。或者勾选上离线推送再打包试一下

看能不能查询设备状态,在线都查询不到的话,看看哪个步骤错了,或者卸载之前的app,重新打自定义基座包。可以查询离线,但是收不到消息的话,看下这里

5.修改配置文件了配置文件啥的,然后运行不了,卸载手机上的,重新打自定义包啊

6.离线有些手机没有声音。各个厂商配置不一样嘛,唉这个问问个推技术吧,厂商更新了他们知道

7.个推官方文档,叫你怎样集成各个厂商(主要是离线推送)。链接地址

最后最后:个推技术客服真的很友好,不懂得可以直接问他们

转载请说明出处内容投诉
CSS教程_站长资源网 » unipush 2.0流程及踩坑记录(后端调用接口,前端推送)

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买