uniapp集成unipush2.0

2023-11-18

unipush3.0集成

unipush推出2.0服务,之前一直用的1.0,现在项目推荐使用2.0,最近也是对2.0这个推送做了测试,下面就主要对华为这个来总结一下,其余的厂商大同小异

1.push1.0和2.0对比

个人理解,2.0比1.0升级之处在于:1.支持全端推送,小程序和h5端 ;2.不在使用后端集成个推那些api了,换句话说也就是解放了后端,活都前端来干,只需要将云函数url化,给后端这个url就行;3.还是要集成各大厂商的SDK,这点和1.0一模一样,绕不过的,4.就是要调用云函数,要收费,虽然很便宜,但是要再买一个云服务器,有点扯

2.购买云服务器,配置云服务器

去unicloud官网,申请一下,免费购买一个月的阿里云服务器就行,免费的

3.客户端集成

  • 1.配置文件中勾选push2.0

在这里插入图片描述

  • 2.点击配置,跳转到unicloud开发者中心进行配置,包名直接在应用管理里面的应用哪里设置,然后选择,并关联你上面申请的阿里云服务器

在这里插入图片描述

  • 3.重点讲一下这个通知消息和透传消息

在这里插入图片描述
好多人这里搞不明白,也懒得官方文档,或者看了也不懂,这里简单区分一下这2个
1.通知消息:这个就是app在线的时候,通过个推渠道下发到手机上面的,只在app在线起作用
2.透传消息:这个就是app离线的时候,通过厂商渠道发送的intent通知重点:需要配置厂商,app离线
也就是说,app在线走个推渠道,离线会走厂商推送,接下来就说一下怎么配置这个厂商渠道来实现Intent通知

  • 4.配置厂商渠道,按照指示到华为官网新建项目和应用,并开通push服务,在配置信息中填写包名,这个包名别填错了,然后把app打包生成的密钥复制过去(连密钥怎么生成都不知道的话,就多去官网看看文档),然后按照步骤一步一步来,配置厂商这里没什么难度,小米 oppo vivo需要在各自应用商店上架,否则配置不了
    -重点 如何确保自己厂商服务已经配置完成,没有出现问题???
    1.我们测试的时候都是用的自定义基座测试,但是自定义基座是无法激活厂商服务的,官方说的打正式包,我更喜欢说是激活,如何激活这个服务,将配置好的厂商服务app直接提交云打包,然后安装并启动app
    2.如何测试:安装完成之后,卸载app,再次用自定义基座获取cid(不知道怎么获取cid,自己去看文档),拿到这个cid到unicloud控制台,打开故障排除,输入cid,出现device token才算是配置完成了

在这里插入图片描述
在这里插入图片描述
接下里就是测试厂商服务:
intent通知格式:这里面把你的包名替换一下就OK

intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component你的包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end

在这里插入图片描述
此时关闭的app,你的app就会收到一条通知消息,这个就是用控制台推送和测试,没什么难度,细心点一步一步来就明白了

4.服务中集成使用云函数

截至这里,上面的配置和1.0的配置一模一样,没有什么区别,开头就说了,2.0不需要服务端写代码了,而且前端使用云函数完成推送,这里就教大家怎么引入云函数并完成配置
1.点到项目,右键创建云开发环境,选择你购买的云服务器
在这里插入图片描述

2.关联你的云服务
在这里插入图片描述
3.右键你的云服务,选择创建云函数,随便起个名字,那个test-data就是我创建的云函数
在这里插入图片描述
4.在你的云函数中引入uni-cloud-push这个扩展模块
在这里插入图片描述
5.然后到你的云服务中,的云数据库中创建3张数据库表,扩展库依赖 3 张 opendb 表:opendb-tempdata,opendb-device,uni-id-device
在这里插入图片描述
这三张表的作用
在这里插入图片描述

6.好,到这一步就算配置的差不多了,现在来进行测试云函数,到你的创建的云函数的index.js文件执行以下代码
zhe’li

'use strict';  
const uniPush = uniCloud.getPushManager({appId:"你的appid"}) //注意这里需要传入你的应用appId  
exports.main = async (event, context) => {  
    return await uniPush.sendMessage({  
        "push_clientid": "cid",     //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid  
        "force_notification":true,  //填写true,客户端就会对在线消息自动创建“通知栏消息”。  
        "title": "通知栏显示的标题",      
        "content": "通知栏显示的内容",  
        "payload": {  
            "text":"体验一下uni-push2.0"  
        }   
    })  
};

这里麻烦改一下你的appid和cid可以吗 ok不ok
在这里插入图片描述
7.上传并允许该云函数

8.此时无论app在线还是离线都可以测试并获取到消息,是内置的云函数帮我们完成功能,如果这一步出错的话,可以到云服务器查看云函数的日志
在这里插入图片描述
9.云函数url化,并向改url发送请求测试,这里多说一句,这里域名是可以绑定自己的域名,至于如何绑定,点击那个连接自己看
在这里插入图片描述
10.postman测试该url,模拟后端获取到数据,向云服务器中云函数发起请求
将云函数的index.js换成以下代码:

// 简单的使用示例  
'use strict';  
const uniPush = uniCloud.getPushManager({  
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"],数组长度不大于1000  
"title": obj.title, // 标题  
"content": obj.content, // 内容  
"payload": obj.data, // 数据  
"force_notification": true, // 服务端推送 需要加这一句  
"request_id": obj.request_id //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失   
    })  
};

然后并上传部署该云函数
在这里插入图片描述
部署完成,拿到刚才那个url到postman中测试

{  
"cids": "",  
"title": "url化好聊聊玩",  
"content": "11900099099 ", 
"options": {  
"HW": {  
"/message/android/category": "WORK"  
}  
},    
"date": {  
"date1": 1,  
"date2": 2  
},  
"request_id": "2121111"  
}

在这里插入图片描述
11.好了,到这完结撒花

5.总结

总结这个过程中可能会遇到bug
1.Q:app离线消息,一会收到一会又收不到了,厂商服务已经配置,而且已经获取到token
A:这个是遇到最多的bug,这个也不算是bug,unipush的推送消息默认是静默通知,各大厂商对这种消息默认是属于营销类的消息,一天上限2条,如何破解,自己去看文档
https://docs.getui.com/getui/mobile/vendor/qps/在这里插入图片描述
2.目前遇到最多的也就是第一个问题,其余问题网上搜一下,都有答案,或者多看看官方文档,角标的问题,自己看文档,一个参数搞定
https://uniapp.dcloud.net.cn/uniCloud/uni-cloud-push/api.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uniapp集成unipush2.0 的相关文章

随机推荐

  • sql语句中关于1 and 1=2详解

    在通关sqli labs的时候 我经常会遇到这么一个问题 那就是 id 1 和 id 1 and 1 2 的查询结果是一致的 我一直以来都很疑惑 然后寻求了很多文章 终于解决了我的问题 我们将其放在sqlyog里面去讲解 我先给你们展示一下
  • Shell监控jvm发短信

    Shell脚本 jstat crontab curl 监控JVM发送短信 bin bash 定时监控本机器下所有java应用的 JVM信息 定时任务配置 crontab e 写入如下 5分钟执行一次检测 5 home admin monit
  • 【H5】 svg动画 旋转属性与虚线属性

    svg 动画 旋转 transform rotate angle x y 不要写在style里面 angle 旋转角度 x y旋转中心 绘制虚线 stroke dasharray a b a b c d 旋转属性 transform rot
  • 立陶宛央行抢跑数字货币背后:前瞻的区块链战略 中国已有企业布局

    7月2日 据路透社报道 立陶宛将在下周开始预售2 4万枚由央行发行的数字货币 该名为LBCoin的数字货币基于区块链技术生产 立陶宛成为是欧盟国家中第一家正式发行央行数字货币的地区 不是2015年就开始研究央行数字货币的英国 不是今年2月试
  • 人工智能芯片未来发展前景如何?

    随着深度学习技术的快速发展 以及互联网和云计算时代海量数据和高效计算能力的支撑 计算机视觉技术 语音技术 自然语言理解技术等人工智能技术取得了突破性进展 并解锁多个行业的人工智能场景 产生了巨大的商业价值 驱动了人工智能行业的发展 同时 伴
  • TEA系列加解密算法详解

    文章目录 TEA系列概述 TEA算法介绍 TEA加密过程 C语言实现 XTEA算法介绍 XTEA加密过程 C语言实现 XTEA算法介绍 XXTEA加密过程 C语言实现 参考 TEA系列概述 TEA算法是由剑桥大学计算机实验室的David W
  • python 序列化_python怎么序列化

    pickle模块 json模块 1 把变量从内存中变成可存储或传输的过程 称之为序列化 Python中叫pickling 其他语言中也被称为serialization marshalling flattening等 都是相同的意思 2 序列
  • XSS安全漏洞的防范

    XSS安全漏洞 通过URL带入的 这种带入主要是前端解析url中的参数 并对数参数执行了innerHTML 或者 html 或者 append 操作 在将参数html 或者append 到html文件中时 会执行其中的js代码 被错误用户获
  • HBase Split 过程

    看了下hbase split的代码 记录一下学习心得 Java代码 private void split final HRegion parent final byte midKey throws IOException final lon
  • chat gpt 常见角色及对应的提示词汇总

    提示词的存在让ChatGPT能够扮演特定的角色 对用户的回答更加专业对口 以下是一些常见的ChatGPT角色及对应的提示词 目录 ChatGPT 市场推广提示 ChatGPT 业务提示 ChatGPT 内容提示 Web 开发的 ChatGP
  • Ubuntu系统中防火墙的使用和开放端口

    Ubuntu系统中防火墙的使用和开放端口 目录 1 Ubuntu查看防火墙的状态 2 2 Ubuntu开启防火墙 2 3 Ubuntu添加开放SSH端口 3 4 Ubuntu防火墙常用命令 5 4 1 查看ufw防火墙的状态 5 4 2 启
  • ARM汇编之APCS规则

    APCS规则简述 寄存器使用规则 寄存器r0 r3用于函数调用过程中传递函数形参 各有一个别名 a1 a4 使用前后可以不用恢复原来的值 R4 r11用于保存函数内部局部变量的值 每个函数使用前 必须要保存被调用函数的值 使用完毕 必须恢复
  • 在Linux远程服务器上搭建JavaWeb开发环境

    配置 远程linux服务器版本为CentOS7 6 使用的是阿里云服务器 目录 1 安装JDK 1 1 查看yum源中JDK版本 1 2 使用yum安装JDK1 8 1 3 查看是否安装成功 2 安装MySQL 2 1 查看是否已安装mys
  • C++ 循环

    有时候 程序需要多次执行同一块代码 一般情况下 语句是顺序执行的 函数中的第一个语句先执行 接着是第二个语句 依此类推 循环语句允许多次执行一个语句或语句组 大多数编程语言中循环语句的一般形式 循环类型 C 编程语言提供了以下几种循环类型
  • Anaconda环境的创建、激活、删除和管理

    1 Anaconda环境的创建 conda create n 环境的名字 自定义 python 3 7 其中环境的名字 自定义 表示创建环境的名字 可以自定义 建议为英文 后面python 3 7表示创建的解释器的版本 conda crea
  • 这里有141个创业公司的死亡案例,看鸡汤不如听教训

    今天我们打算跟大家聊聊失败 关于成功的方法论有着趋同性 多半与 天时地利人和 有关 而关于失败 却很少有人愿意公开谈起 也许因为野兽总是不想将伤口暴露在外 探讨失败的意义 可能远远大于成功 因为面对挫折 即使自认为最无畏的人也会有这样的时刻
  • PicGo安装与配置-Gitee图床

    PicGo安装与配置 Gitee图床 文章目录 PicGo安装与配置 Gitee图床 1 前言 2 下载 3 安装 4 Gitee 5 Node js 6 配置PicGo 6 1 PicGo界面配置 6 2 npm安装PicGo插件Gite
  • 空格的正则表达式

    在正则表达式想使用空格的时候不能采用 s的方法 因为 s指的是空白 就是所有空白 如果想表示单纯的空格的话可以采用 方括号本身就是匹配其中的字符 那么其中放空格就是匹配空格 如果有其他正则表达式问题可以查看 https blog csdn
  • GCP reliable google cloud infrastructure, devops lab

    最后更新2022 03 13 先到menu source repository里建立repository 还是不很好找 source repository在CI CD分类里面 点右上角的add repository按钮 输名字devops
  • uniapp集成unipush2.0

    unipush3 0集成 unipush推出2 0服务 之前一直用的1 0 现在项目推荐使用2 0 最近也是对2 0这个推送做了测试 下面就主要对华为这个来总结一下 其余的厂商大同小异 1 push1 0和2 0对比 个人理解 2 0比1