目录

1、简介

2、极光Demo

2.1、进入极光官网——应用管理

2.2、快速集成一个Android/iOS的SDK​

2.3、java服务端代码

3、参考资料


1、简介

简单来说,就是android系统没有内置的推送程序,如果要想实现消息推送到APP只有通过客户端与服务器长连接的方式来保证消息推送的通畅性。因此可以借助第三方平台,如极光推送,专门负责推送消息。这样APP就不需要与服务器长连接了,可以减少服务器负荷。

有关极光推送详细原理可参考:从极光推送的实现原理概括iOS和Andriod推送原理

2、极光Demo

2.1、进入极光官网——应用管理  

https://www.jiguang.cn/portal/#/dev/overview/appCardList

创建一个极光应用

2.2、快速集成一个Android/iOS的SDK

如果只是做极光推送后端的话,可以直接下载官方集成好的sdk

2.3、java服务端代码

消息模板类

package com.myaurora.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.JsonObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; import java.util.Map; /**
* @author: Atlantide
* @time: 2021/8/6 9:52
* @description: 极光推送消息类型
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class NotificationBO {
private String title;
private String alert; }

枚举类 

package com.myaurora.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor; @Getter
@AllArgsConstructor
@NoArgsConstructor
// 枚举类,用于指定推送平台,推送模式
public enum PushEnum {
IOS(1, "ios"),
Android(2, "android"),
RegistrationId(3, "registrationId"),
Alias(4, "alias"),
All(5, "all"); private int code;
private String content;
}

工具类 

package com.myaurora.util;

import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import com.myaurora.entity.NotificationBO;
import com.myaurora.enums.PushEnum;
import org.springframework.beans.factory.annotation.Value; /**
* @author: Atlantide
* @time: 2021/8/6 10:04
* @description: 极光推送工具类
*/ public class JpushUtils { private static JPushClient jPushClient = new JPushClient("极光应用的masterSecret", "极光应用的appKey"); /**
* @author: Atlantide
* @creat: 2021-08-05 15:23
* @desc: 批量推送
* notificationBO: 消息
* alias: 别名
* registrationIds: 注册Id
* platForm: android/ios
* pattern: 根据alias/registrationIds推送 / 全局推送(推所有用户)
**/
public static int jiguangSend_batch(NotificationBO notificationBO, String[] alias, String[] registrationIds, String platForm, String pattern) {
int result = 0;
try {
PushPayload pushPayload = JpushUtils.pushBatch(notificationBO, alias, registrationIds, platForm, pattern); System.out.println(pushPayload);
PushResult pushResult = jPushClient.sendPush(pushPayload);
System.out.println(pushResult);
if (pushResult.getResponseCode() == 200) {
result = 1;
}
} catch (APIConnectionException e) {
e.printStackTrace(); } catch (APIRequestException e) {
e.printStackTrace();
}
return result;
} /**
* @author: Atlantide
* @creat: 2021-08-05 15:17
* @desc: 指定平台批量推送
* notificationBO: 消息
* alias: 别名
* registrationIds: 注册Id
* platForm: android/ios
* pattern: 根据alias/registrationIds推送 / 全局推送(推所有用户)
**/
private static PushPayload pushBatch(NotificationBO notificationBO, String[] alias, String[] registrationIds, String platForm, String pattern) {
// 创建一个IosAlert对象,可指定APNs的alert、title等字段
return PushPayload.newBuilder()
// 指定要推送的平台
.setPlatform(platForm.equals(PushEnum.Android.getContent()) ? Platform.android()
: platForm.equals(PushEnum.IOS.getContent()) ? Platform.ios() : Platform.all())
// 指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration
.setAudience(pattern.equals(PushEnum.Alias.getContent()) ? Audience.alias(alias) :
pattern.equals(PushEnum.RegistrationId.getContent()) ? Audience.registrationId(registrationIds) :
Audience.all())
// jpush的通知
.setNotification(cn.jpush.api.push.model.notification.Notification.newBuilder()
// 指定当前推送的通知
.addPlatformNotification(platForm.equals(PushEnum.Android.getContent()) ? AndroidNotification.newBuilder().
setAlert(notificationBO.getAlert())
.setTitle(notificationBO.getTitle())
.build() :
IosNotification.newBuilder().setThreadId(notificationBO.getTitle()).setAlert(notificationBO.getAlert()).build())
.build())
.setOptions(Options.newBuilder()
// 此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
.setApnsProduction(false)
// 此字段是给开发者自己给推送编号,方便推送者分辨推送记录
.setSendno(1)
// 此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天;
.setTimeToLive(86400)
.build())
.build();
} }

在pom.xml中增加极光推送的依赖

 <!-- 极光推送 -->
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.4.3</version>
</dependency> <dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.1.7</version>
</dependency>

启动类

package com.myaurora;

import com.myaurora.entity.NotificationBO;
import com.myaurora.util.JpushUtils; /**
* @author: Atlantide
* @time: 2021/8/6 10:51
* @description:
*/ public class Run {
public static void main(String[] args) {
String[] alias = {"别名"};
String[] registrationIds = {"Registration ID"};
NotificationBO notificationBO = new NotificationBO();
notificationBO.setTitle("标题");
notificationBO.setAlert("内容");
//推送平台为android,推送方式为使用别名推送
JpushUtils.jiguangSend_batch(notificationBO, alias, registrationIds, "android", "alias");
}
}

打开”极光Demo“,启动java程序,消息推送成功。

3、参考资料

java后端整合极光消息推送的更多相关文章

  1. java服务端集成极光消息推送--详细开发步骤

    1.极光推送账号准备 要使用极光消息推送必须先在官方网站上注册账号,并添加应用. 产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/ 注册开发者账号 ...

  2. atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p

    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p 1. 推送所设计到底功能1 1.1. 内容压缩1 1.2. 多引擎1 2. reg  ,设置appkey and pw ...

  3. .NET对接极光消息推送

    什么是APP消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息 ...

  4. netty-socketio整合springboot消息推送

    netty-socketio整合springboot消息推送 1.netty-socketio消息推送 1)在项目中常常涉及到消息推送的情况,消息推送要求的实时性,使用传统的方式已经不能满足需求了: ...

  5. java开发微信模板消息推送

    发布时间:2018-12-12   技术:springboot+maven   概述 该demo主要涉及微信模板消息推送功能, 详细 代码下载:http://www.demodashi.com/dem ...

  6. 关于消息推送的补充,主要介绍服务端的实现,包含object c 版本 c 版本 java 版本 php 版本 (转)

    要实现消息推送功能,我们可以采用第三方(腾讯:信鸽:百度:云推送:极光推送:友盟):当然,因为各种原因,我们不能使用第三方的推送服务,那我们就需要自己编写服务端.在网上寻觅了很久,找到一篇很不错的讲解 ...

  7. Android消息推送——JPush极光推送

    刚看了一篇关于Android消息推送评测总结的博客http://www.cnblogs.com/logan/p/4514635.html: 自己也对原学过的JPush极光进行一下小结,方便后续工作使用 ...

  8. PhoneGap 的消息推送插件JPush极光推送

    一. 什么是极光推送 极光推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动, 从而有效地提高留存率,提升用户体验.平台提供整合了 Android 推送.iOS 推送的统一推 ...

  9. xamarin.android 消息推送功能--极光推送

    最近在使用xamarin.android的消息推送功能,官方使用的例子是FCM方式,按照官方文档,使用FQ软件是可以成功的,但是在国内由于众所周知的原因,在国内服务并不能使用,于是查找国内各自推送平台 ...

  10. APP的消息推送(极光推送)

    APP的消息推送,使用的第三方平台是极光推送 简单案例(以Thinkphp为例): 1.下载下载PHPSDK 2.把PHPSDK目录下的jpush-api-php-client-3.5.1\src\J ...

随机推荐

  1. 会话跟踪技术 - Cookie 和 Session 快速上手 + 登陆注册案例

    目录 1. 会话跟踪技术概述 2. Cookie 2.1 Cookie的概念和工作流程 2.2 Cookie的基本使用 2.3 Cookie的原理分析 2.4 Cookie的使用细节 2.4.1 Co ...

  2. 如何去了解Spring

    对于你想了解的技术 官方总是一个合适的选择 首先,我们所指的Spring 一般指的是Spring Framework,伴随着的时代的进步,Spring全家桶也逐渐完善起来 Spring 1.Why S ...

  3. ssh端口映射 解决服务器使用tensorboard的问题

    有时会在服务器上使用tensorboard,然而本地无法直接访问tensorboard结果网页.这时候使用端口映射即可.比如tensorboard上占用的是 6006 端口,也就是说结果在服务器的 l ...

  4. 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。

    第一题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...

  5. JavaScript中的代码执行顺序

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head&g ...

  6. 齐博x1 直播神器聊天小插件

    下载地址如下:https://down.php168.com/livemsg.rar 本插件由论坛网友笨熊提供 非常感谢他给大家提供那么一个非常好用的直播必备神器. 如下图所示,大家在直播的时候,这个 ...

  7. python批量加密文件

    1.文件名的加密与解密 #coding:utf-8 from docx import Document import os,sys from docx.oxml.ns import qn def fi ...

  8. 记录在linux上单机elasticsearch8和kibana8

    目录 1.背景 2.es对jdk和操作系统的要求等 3.安装步骤 3.1 下载对应版本的es 3.2 创建es账户 3.3 修改es配置 3.3.1 修改es配置 3.3.3 修改jvm配置 3.4 ...

  9. c++ 模板 指针类型偏特化

    一步步来,先简单点. 目标:我们要实现一个模板类,例化后,可以通过get_val获取到值,通过get_ptr获取到指针.具体什么意思结合例子来看看吧. 例子: struct A{ int data; ...

  10. ES6学习笔记(十四)module的简单使用

    1.前言 module模块机制是es6新引入的,它解决了作用域的问题,使代码更加规范和结构化. 下面简单的使用一下. 2.基本使用 2.1 模块和脚本的区别 模块代码运行在严格模式下,并且没有任何办法 ...