Uni-push 推送实现全过程 (2022 最新 最全 最细)

admin 阅读:76 2024-02-13 22:07:23 评论:0

  序言:

  公司使用的uniapp开发的项目需要推送功能,看了下官方文档,经过几天努力,打通了推送功能。下图是ios和安卓(oppo和荣耀手机),在线或离线获取的推送通知。

  在这里插入图片描述

  UniPush是DCloud联合个推公司推出的集成型统一推送服务,内建了苹果、华为、小米、OPPO、VIVO、魅族、谷歌FCM等手机厂商的系统级推送和个推等第三方推送。

云端打包

  应用开通 Uni Push 功能以后,只需要在 HBuilderX 中打开manifest.json,选择“App SDK配置”,向下找到推送功能配置,勾选 “DCloud UniPush” 即可。

  在这里插入图片描述

  打开你的项目App模块配置,点击配置进入DCloud开发者中心。

  在这里插入图片描述

  应用开通 Uni Push 功能时,需要提交应用相关信息,如下图所示:

  **注意:**在申请开通时,需要确保输入的 或 必须与打包时配置的一致,否则可能会导致无法收到推送消息。

  如果已经开通 Uni Push,会看到如下页面:

  在这里插入图片描述

iOS推送证书配置

  iOS 平台还需要在 “配置管理”-“应用配置” 页面上传推送证书

  如何获取推送证书请参考个推官方文档教程 iOS证书配置指南

  在这里插入图片描述

厂商推送参数设置(可选,应用离线时可提高推送成功率)

  Uni Push 集成并统一了各个手机厂商的系统级推送,目前支持魅族、OPPO、华为、小米、VIVO。如果需要使用厂商推送,需要先在各厂商开发者平台申请。

  申请通过后厂商会提供推送的相关参数,需要将这些参数配置到 DCloud 开发者中心后台。

  厂商参数配置页面如下图所示:

  在这里插入图片描述

  公司App也是上架了oppo,华为和小米的平台,所以这三个厂商推送平台都有填写。可以通过打开各自厂商的推送后台获取到这些信息,

  在这里插入图片描述

  到此移动端的配置都已经完成!

使用代码通过服务端接口推送消息

  服务端集成时首先需要获取AppId、AppKey、MasterSecret参数,登录DCloud开发者中心,在“Uni Push”下的“应用配置”页面中获取,如下图所示:

如果使用uniCloud开发服务器

  已经有封装好的易用插件负责服务器端开发,见:https://ext.dcloud.net.cn/plugin?id=1680

如果使用传统服务器开发

  参考“个推·消息推送”的服务端快速集成文档http://docs.getui.com/

  在这里插入图片描述

  通过服务端接口下发推送消息,需要封装个推侧Rest-V2接口。应用在前台,透传内容若使用Dcloud侧要求的格式,则安卓客户端不进透传receive回调,自动创建通知栏通知;IOS开发者则需要在客户端receive透传回调中自己处理创建本地通知;应用在后台使用厂商通道需配置push_channel中的相关参数才可生效。

  以下是Java-sdk封装Rest-V2厂商推送示例:

  注意:把$intent变量赋值字符串中的io.dcloud.HBuilder换成自己应用的包名

  完整服务端厂商推送教程参考:

  https://docs.getui.com/getui/server/rest_v2/common_args/

项目推送逻辑大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  项目需求是针对用户在审核过程中下发到指定某人,此人就可以在手机上获得推送消息通知,以便不会错过审核信息。逻辑也比较简单,App端获取到cid,通过登录接口发给服务端,服务端再通过集成的个推sdk把对应的cid,下发给App端,来完成交互。至于你需要个推,批量推,还是群推,可根据自己业务需求来定。

  不同的推送规则可以参照教程查看

  在这里插入图片描述

  UniPush推送服务已经封装好iOS&Android平台的原生集成工作,开发者只需要调用JS代码处理推送消息的业务逻辑:

  在App.vue页面:

  两个监听click很明显,就是点击时候出触发的。

  receive有两种情况会触发

  1.ios应用已经打开的情况,这种情况通知栏不会有消息。可以自己写这种情况的处理逻辑,一般会弹出一个弹窗问需不需要跳转,我的方式是用plus.push.createMessage本地创建一条消息。

  2.android接收到不符合格式的推送(不符合{title:“xxxx”,content:“xxxx”,payload:“xxxxx”}),这个是服务端来控制的。

  有可能取不到clientId,或者为‘undefined’ ‘null’ 等字符串,可以通过定时器获取,参照上图代码。

  获取cid码特别注意一点,真机调试时要在自定义打包基座中获取,否则获取的cid码无效!

过程中遇到的问题

  1.服务端推送ios接收不到消息,ios or android cannot be null报错

  2.安卓点击消息图标不能唤醒应用大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  3.ios上桌面图标显示角标, 并且不消失

解决方法

  1.可能是没有仔细看个推文档,感觉参数都对也不缺,试了半小时都接收不到,最后只能加个推技术微信

  在这里插入图片描述

  在这里插入图片描述

  然后就顺利解决了,所以说直接问技术总比瞎浪费时间好。

  2.离线推送时,安卓点击推送消息图标,没有任何反应,也无法唤醒App。后面查看文档,发现需要payload参数

  在这里插入图片描述

  3.ios角标的小红点一直存在,对于强迫症真的很难受,而且点击过角标红点一直都在,重新卸载也没有办法。后面还是用了代码来解决

  实现简单的uni-push并不是很难,都是集成封装好的, 代码量也不多,官网也有很详细的文章,就是开通各大厂商步骤繁琐,需要些耐心,遇到bug还是仔细多看几遍文档吧。此篇是博主一点点经验分享,也希望能对大家有点点帮助,谢谢!

  客户端调用的js API见:https://www.html5plus.org/doc/zh_cn/push.html大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  如果使用传统服务器开发,文档仍然是个推的服务器文档http://docs.getui.com/

  检查应用是否被授予推送权限:https://ext.dcloud.net.cn/plugin?id=594

  开启关闭推送服务:https://ext.dcloud.net.cn/plugin?id=727

  自定义iOS推送铃声:https://ext.dcloud.net.cn/plugin?id=690

  如何自定义推送通知的图标:https://ask.dcloud.net.cn/article/35537

Uni-push 推送实现全过程 (2022 最新 最全 最细)

Uni-push 推送实现全过程 (2022 最新 最全 最细)

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容