Uni-App 接入 uni-push 2.0 指南

准备工作

开通 uni-push 2.0 服务

前往 DCLOUD开发中心,找到 uniPush2.0 → 应用信息,按要求开通服务

在这里插入图片描述
开通之后,就可以看到如下界面:
在这里插入图片描述
下面还有“厂商推送设置”,因为默认推送是在应用启动并联网之后才能收到的,如果想在应用没有启动不联网的时候也能推送,那就需要配置各个厂商设置,而且这些厂商会要求你的软件必须在其应用商店上架才行,我这里不需要这个功能,就没有配:
在这里插入图片描述

客户端配置

manifest.json

找到 manifest.jsonApp模块配置 → Push,然后勾选 uniPush 2.0 → 在线推送,离线推送我这里不需要就没有勾选:

在这里插入图片描述
除此之外还要配置权限,参考官方:
在这里插入图片描述

客户端逻辑

App.vueonLunch 生命周期中加入一下逻辑代码:

onLaunch: function() {
    // #ifdef APP-PLUS
    uni.getPushClientId({
        success: (res) => {
            let push_clientid = res.cid
            console.log('客户端推送标识:', push_clientid)
        },
        fail(err) {
            console.log(err)
        }
    })

    console.log('App Launch')
    uni.onPushMessage(res => {
        console.log("收到推送消息:", res) //监听推送消息
        uni.createPushMessage({
            title: res.data.title,
            content: res.data.content,
            payload: res.data.payload
        })
    })
    // #endif
},

方法参考:uni.getPushClientId(OBJECT)uni.createPushMessage(OBJECT)

客户端使用自定义基座调试

客户端需要使用自定义基座进行云打包才能正常调试,进入 uni-app,依次进入 运行 → 运行到手机或模拟器 → 制作自定义调试基座 → 打包,我这里用的是开发者中心生成的云端证书:

在这里插入图片描述
具体可参考官方教程:自定义基座使用云端证书(服务器生成的证书)

然后使用自定义基座启动 app,将 app 的通知权限和悬浮通知权限打开:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

使用示例

上面准备工作完成后,就可以开始使用了

推送消息

在 开发者中心 → uniPush2.0 → 消息推送 中填写推送信息:

在这里插入图片描述
在这里插入图片描述

点击 预览 → 确定

接收消息

这时候手机上就可以收到通知了:

在这里插入图片描述
在这里插入图片描述

云函数推送消息

有时候不想提前开通 uni-push,想直接先试一试,项目如果绑定了云空间,可以通过云函数的方式实现,这种方式 app 通过默认基座启动就行:

  1. 鼠标悬浮到 uniCloudcloudfunctions,右键 → 新建云函数 / 云对象,起个名字之后点击下方 “添加公共模块或扩展库依赖” → 仅勾选 “uni-cloud-push
    在这里插入图片描述
  2. 替换生成文件夹中 index.js 内容
// 简单的使用示例
'use strict';
const uniPush = uniCloud.getPushManager({
	appId: ""
}) //注意这里需要传入你的应用appId,用于指定接收消息的客户端
exports.main = async (event, context) => {
	return await uniPush.sendMessage({
		push_clientid: "", //填写在uni-app客户端获取到的客户端推送标识push_clientid
		title: "通知栏显示的标题",
		content: "通知栏显示的内容",
		payload: {
			text: "体验一下uni-push2.0"
		}
	})
};
  1. 右键运行云函数,会发现 app 上也会弹出通知

利用云函数在自己的后端实现推送

上面可以在 uni-app 的后台实现推送消息,那如果我想在自己公司的后台做推送怎么整?经过一天的研究,我才知道云函数可以 url

云函数修改

首先云函数的内容需要修改一下,进入到之前新建的云函数的 index.js 中:

'use strict';
const uniPush = uniCloud.getPushManager({
	appId: "你的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"]
		"title": obj.title, // 标题  
		"content": obj.content, // 内容  
		"payload": obj.payload, // 数据
		"request_id": obj.request_id //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失  
	})
	return res
};

在这里插入图片描述
unicloud 后台可以看到云函数:

在这里插入图片描述

云函数url

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请求工具测试url化后的云函数

我用的是 ApiPost,你想要用 Postman 什么都行,这里的 url 就是上一步你编辑后的完整 url

在这里插入图片描述
点击发送:
在这里插入图片描述
具体参数可以参考:uni-push服务端API

注意

  1. request_id 重复的话,消息可能丢失

  2. 参数 cids 不传或者为空数组时,默认消息会推送给全部用户,即“全推”,而全推 10分钟内,内容即 content 字段值不能重复,否则消息也会丢失

  3. 云函数中使用的 uniPush.sendMessage,最大推送设备数是500,超过将直接忽略。就是如果你传了 cids 为数组,且数组长度大于了 500,那就不行,可以考虑分批推送,每 500 个推送一次,但是“全推”时没有这个限制

下面是我和个推官方人员对于这一块的聊天记录:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

uni-app 后台推送失效了?

我研究云函数 url 化推送之后,uni-app 后台推送不知道为什么就失效了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说我是只开启了在线的,你们可以看之前客户端配置 manifest.json 那里,确实只开启了在线,因为我这业务不需要离线,但是我之前一直都是这个配置啊,为什么之前可以推,奇奇怪怪,大家知道了可以评论区留言。

可能更优的做法

参考:最佳实践

就好像是充分利用云函数,使用uni-id-pageuni-push2.0uni-iduni统计uni-push-admin等,可以直接云端部署一个关于推送的后台管理系统,具体我不太清楚,我也是刚摸索,朋友们可以自己研究

开启 / 关闭 推送

有个官方插件可以实现在客户端监测推送服务状态、开启、关闭推送服务

插件地址

参考文章

如何基于 uni-push2.0 实现全平台推送

uni-push2统一推送

UniPush开通指南

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
uniapp是一款跨平台开发框架,通过编写一次代码即可打包成多个平台的应用。在打包当前应用时勾选了push>unipush 1.0,意味着我们希望为应用添加推送功能。 unipush 1.0是uniapp提供的推送插件,可以用于实现消息的推送和通知功能。通过勾选此选项,我们可以在应用中集成推送服务,实现消息的即时推送和通知。 通过unipush 1.0,我们可以实现以下功能: 1. 推送消息:可以向应用用户发送推送消息,包括文字、图片、链接等。这样用户可以在没有打开应用的情况下及时收到重要消息。 2. 推送通知:可以发送通知消息给应用用户,包括标题、内容和点击跳转等功能。这样用户在打开应用时可以查看到通知消息,方便及时了解重要信息。 3. 个性化推送:可以根据用户的行为、偏好等信息进行个性化推送,提高用户体验和互动性。 使用unipush 1.0前,我们需要进行一些配置和准备工作: 1. 注册推送平台账号:根据需要选择相应的推送平台,如个推、极光推送等,并注册账号获取相关信息。 2. 配置应用信息:在推送平台上创建应用并获取应用APP ID和APP Key等信息。 3. 集成SDK并配置参数:按照推送平台提供的文档,将SDK集成到uniapp项目中,并在项目的manifest.json文件中配置推送相关参数。 最后,在打包当前应用时勾选push>unipush 1.0,即可将推送功能集成到应用中,并在发布后使用推送平台提供的接口,调用相应的推送功能。 通过使用unipush 1.0,我们可以为uniapp应用添加推送功能,提高应用的用户体验和互动性,及时向用户发送重要消息和通知。这对于开发者来说是一个非常有用的功能,可以帮助我们更好地与用户进行沟通和互动。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏北海-RemHusband

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值