提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、unipush是什么?
  • 二、使用步骤
    • 1.开通Unipush推送服务
    • 2.java服务端下发消息内容
    • 3.预览测试
    • 4.手机端处理

前言

国内Android的Push是一个混乱的世界,因为 Google 的 Push 服务 FCM 被墙,所以一些国内的安卓手机厂商各自做了自己的推送,比如华为、小米、OPPO、VIVO、魅族等,但还有很多国产手机厂商没有提供官方推送方案。三方独立公司如个推,则提供了独立的 push 方案。
在没有 uniPush 以前,如果只使用三方 push,会在很多国产手机上因为节电设置而无法保活 push 进程,导致无法推送。
而如果每个安卓手机的官方 Push SDK 都集成开发一遍,这么多平台,工作量会非常巨大,管理维护也很麻烦。

uniPush 解决了这个难题,开发者只需要开发一次。系统会自动在不同手机上选择最可靠的推送通道发送 push 消息,保障送达率。

UniPush 即降低了开发成本、又提高了 push 送达率,并且免费,是当前推送的最佳解决方案。


提示:以下是本篇文章正文内容,下面案例可供参考

一、UniPush是什么?

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

二、使用步骤

1.开通Unipush推送服务

HBuilderX 本项目中打开manifest.json,选择“App 模块配置”,向下找到Push推送功能配置,勾选 “UniPush(集成各家手机厂商系统推送及个推)” 即可。

点击勾选的uniPush配置进入DCloud开发者中心

**注意:**在申请开通时,需要确保输入的 Android包名 和 Android应用签名 (签名信息可点击更多查看具体操作)必须与打包时配置的一致,否则可能会导致无法收到推送消息。

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

打开链接开发者中心https://dev.dcloud.net.cn/#/pages/app/push/thirdparty

Uni Push 集成并统一了各个手机厂商的系统级推送,目前支持魅族、OPPO、华为、小米、VIVO。如果需要使用厂商推送,需要先在各厂商开发者平台申请。
申请通过后厂商会提供推送的相关参数,需要将这些参数配置到 DCloud 开发者中心后台。
点击厂商推送设置选择当前应用项目页面如下图所示:

由于公司APP需求上线华为,打开AppGallery Connect网站,选择我的项目。打开刚才创建的项目,查看应用信息中相应的华为 AppID、华为 SecretKey。该信息在之后步骤中将会使用,如下图:

其他厂商具体流程点击 厂商应用开通指南-个推文档中心查看详情。

2.java服务端下发消息内容

首先需要获取AppId、AppKey、MasterSecret参数,登录DCloud开发者中心,在“Uni Push”下的“应用配置”页面中获取,引入maven库文件,在线走内推,离线走个推,Java-sdk封装Rest-V2厂商推送示例:

完整服务端厂商推送教程参考:https://docs.getui.com/getui/server/rest_v2/common_args/

        <dependency><groupId>com.gexin.platform</groupId><artifactId>gexin-rp-sdk-http</artifactId><version>4.1.2.1</version></dependency><repository><id>getui-nexus</id><url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url></repository>
public AjaxResult info( String commonApiModel ) {CommonInterfaceModel model = jsonToObject(commonApiModel,key,secret);if(model.isCheck()) {Order appPush = JSONObject.parseObject(model.getParameter(),Order.class);IGtPush push = new IGtPush(url, appKey, masterSecret);Style0 style = new Style0();// STEP2:设置推送标题、推送内容style.setTitle(appPush.getOdTitle());style.setText(appPush.getOdContent());// 设置推送图标
//            style.setLogo("./src/main/resources/static/push.png");// 配置通知栏网络图标
//            style.setLogoUrl("");// STEP3:设置响铃、震动等推送效果// 设置响铃style.setRing(true);// 设置震动style.setVibrate(true);// STEP4:选择通知模板NotificationTemplate template = new NotificationTemplate();template.setTransmissionType(1);template.setAppId(appId);template.setAppkey(appKey);template.setStyle(style);SingleMessage message = new SingleMessage();message.setOffline(true);// 离线有效时间,单位为毫秒message.setOfflineExpireTime(24 * 3600 * 1000);message.setData(template);// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发message.setPushNetWorkType(0);Target target = new Target();target.setAppId(appId);target.setClientId(appPush.getClientId());IPushResult ret = null;try {ret = push.pushMessageToSingle(message, target);} catch (RequestException e) {System.out.println(e.getMessage());ret = push.pushMessageToSingle(message, target, e.getRequestId());}if (ret != null) {System.out.println("返回结果=====" + ret.getResponse().toString());} else {System.out.println("服务器响应异常=====");}return AjaxResult.success(ret.getResponse().toString());} else {return AjaxResult.error("秘钥或参数错误");}}

3.测试预览

必须打包正式App安装到手机并要保证第一步(Android包名和Android应用签名)的操作没有问题,手机端通过plus.push.getClientInfo();获取CID客户端标识,也是下一步需要存到数据库的标识串,如下图:

// 获取App端cid
let CID= plus.push.getClientInfo();
console.log(CID)

4.手机端处理

需求是针对用户在审核过程中下发到指定人,此人就可以在手机上获得推送消息通知。大概逻辑比较简单,App端获取到cid,通过登录判断当前人是否要接消息通知,通过接口存到对应人的数据库,服务端再通过集成的个推sdk把对应的cid,下发给App端,来完成交互。个推,批量推,群推,可根据业务需求进行更改设定。

App.vue页面:

    // #ifdef APP-PLUSlet timer = false;plus.push.addEventListener("click",(msg)=>{clearTimeout(timer);timer = setTimeout(()=>{console.log(1111,msg);},1500)},false)plus.push.addEventListener("receive",(msg)=>{if("LocalMSG" == msg.payload){}else{if(msg.type=='receive'){var options = {cover:false,title:msg.title};plus.push.createMessage(msg.content, msg.payload, options ); }  }},false)// #endif

登录页面:

let pinf = plus.push.getClientInfo();
let cid = pinf && pinf.clientid || ''; //客户端标识
// 登录根据userId更新存数据库clientId
//发送网络请求
let opts = {url: '/app/*****',method: 'post'}
this.$http.httpTokenRequest(opts,{clientId:cid,userId:res.data.data.userId}).then(res => {if(res.data.code == 200){//继续执行登录逻辑}else{uni.showToast({title: '登录异常,请联系管理员。',icon: "none",})}
})

推荐

推荐看一下Unipush常见问题 - DCloud问答基本概括了常见的所有问题,希望能帮到你。

Uni-app实现推送Uni-push(Android)相关推荐

  1. 如何用好消息推送(push)做APP运营

    作为移动端APP产品运营最重要的运营手段,消息推送(push)被越来越多的APP厂商所重视,在信息泛滥的移动互联网时代,手机APP应用安装得越来越多,小小的手机屏幕每天收到的消息推送也越来越多,站在用 ...

  2. Android App消息推送 实现原理

    https://www.jianshu.com/p/b61a49e0279f 1.消息推送的实质 实际上,是当服务器有新消息需推送给用户时,先发送给应用App,应用App再发送给用户 2. 作用 产品 ...

  3. Android 项目必备(三十八)-->APP 消息推送

    文章目录 前言 推送的实现方式 1. C2DM 2. 轮询 3. SMS信令推送 4. MQTT协议 5. XMPP协议 6. 使用第三方平台 Android 中 MQTT 的使用 1. 集成 2. ...

  4. App推送推了10万打开100?3招提高消息推送(Push)到达率

    消息推送(push)是App提醒或唤醒用户的方式之一也是App运营的渠道之一,运用得当可以帮助产品运营人员更高效地实现运营目标,相反盲目运用也会让App变得让人讨厌.因而推送(Push)的到达率越来越 ...

  5. IDEA(或Android Studio)推送(push)代码报错 unable to read askpass response from ‘C:\Users\Urasaki\AppData\Loc

    推送给代码报错 unable to read askpass response from 'C:\Users\Urasaki\AppData\Local\Google\AndroidStudio202 ...

  6. uniapp APP消息推送方案

    提示:本文实例消息推送使用uniapp官方的unipush推送: 项目场景:该项目是uniapp + uniCloud 项目,APP端的消息推送使用 html+ 与原生实现交互 1.开通推送消息 – ...

  7. 前端基于uniapp[uniPush]实现APP消息推送(安卓、IOS)

    前提概述:此文章都是基于uniapp中uniPush2实现的在线.离线推送 app消息推送流程 登录开发者中心先填写好项目信息以及配置厂商 在manifest.json文件中勾选推送模块 打包自定义基 ...

  8. uniapp轻松集成极光推送自定义消息+通知 Android极光 IOS极光 两行代码集成极光SDK

    ###[前言] 极光推送(JPush)在为开发者提供基础推送服务的同时,还提供了用户精准标签.用户分群.地理围栏.应用内消息.智能发送策略.智能促活等服务能力,可有效提升消息的送达率.展示率和点击率, ...

  9. 如何构建一套高可用的 APP 消息推送平台

    转载自  如何构建一套高可用的 APP 消息推送平台 消息推送作为移动 APP 运营中的一项关键技术,已经被越来越广泛的运用.本文追溯了推送技术的发展历史,剖析了其核心原理,并对推送服务的关键技术进行 ...

  10. 国内APP消息推送机制以及微信消息延迟问题剖析

    转自:https://club.huawei.com/thread-15878044-1-1.html 一.前言 随着安卓手机以及QQ/微信/支付宝/滴滴出行/美图外卖等一大批移动通信/移动消费应用的 ...

最新文章

  1. 八年磨一剑,重新定义HBase——HBase 2.0阿里云HBase解读
  2. html 浮动脱离文档流,CSS标准文档流与脱离文档流
  3. K8s 从懵圈到熟练-集群伸缩原理
  4. 程序员去创业公司做CTO,需要注意什么?
  5. php怎么样sphinx,php使用sphinx
  6. java知识回顾_Java7 –回顾
  7. linux查看r的安装路径,在Linux CentOS 6.5版上安装R3.1.1的问题(检查LDFLAGS以获取Fortran库的路径)...
  8. Web中常用字体介绍(转)
  9. linux巡检脚本生成word,Linux 编写安全巡检脚本
  10. 安卓24:Android关于日期和时间的几个相关控件DatePicker、TimePicker等
  11. springBoot整合ElasticSearch【代码直接复制可用】(超级详细)
  12. C语言是否能用memcmp函数比较结构体
  13. 电脑广告弹窗如何操作过滤屏蔽,经验技巧!怎样设置弹窗自动拦截?
  14. MyBatis入门介绍,凤凰涅槃:从 iBatis 到 MyBatis
  15. firefly-rk3288开发板Linux驱动——LED驱动
  16. android自定义UI模板图文详解
  17. 启动bat文件--系统找不到指定路径
  18. python爬虫-爬妹子图_Python 爬虫入门之爬取妹子图
  19. 微信小程序原生开发 记录
  20. 【刘翔四连冠将是中国田径的悲哀】

热门文章

  1. 图像处理 语音信号 matlab china-pub 当当,MATLAB数字信号与图像处理范例实战速查宝典...
  2. 解决RGB转Lab问题,lab值不对应的问题
  3. 首届毕业生!南大人工智能学院:本科30万,硕士48万
  4. PeckShield宣布与imToken达成战略合作,为其imBTC提供合约安全审计
  5. 判断对象数组中是否存在重复项
  6. c语言 终端用户输入字符,C语言学习 - 输入输出
  7. 向外行介绍程序员工作的复杂程度
  8. [单片机框架][AT指令框架][从机版] 高内聚 低耦合
  9. Maven的工程类型有哪些?
  10. 数学连乘和累加运算符号_求和符号Σ和连乘符号Π在什么情况下可交换?希望能给出证明或具体证明出处。...