1. 添加poom依赖:

<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.6.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency> <!-- For log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

2. 创建工具类如下(红色为需要注意的地方):

package com.demo.jiguangpush;

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.Message;
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.IosNotification;
import cn.jpush.api.push.model.notification.Notification; import java.util.Map; public class JgPush { // 设置好账号的app_key和masterSecret
/*private static String appKey = "3c8473f025736ea1bfa3a1c1";
private static String masterSecret = "ee97e1c77b2e3710da671886";*/ //我的是数据库配置的 //极光推送>>Android
//Map<String, String> parm是我自己传过来的参数,可以自定义参数
public static String jpushAndroid(Map<String, String> parm) { //创建JPushClient
JPushClient jpushClient = new JPushClient(parm.get("masterSecret"), parm.get("appKey"));    //注意参数顺序,不然会报错(masterSecret, appKey)
//推送的关键,构造一个payload
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.android())//指定android平台的用户
.setAudience(Audience.all())//你项目中的所有用户
.setNotification(Notification.android(parm.get("pushContent"), parm.get("pushTitle"), parm))
//发送内容,这里不要盲目复制粘贴,这里是我从controller层中拿过来的参数)
.setOptions(Options.newBuilder().setApnsProduction(false).build())
//这里是指定开发环境,不用设置也没关系,android只有一种
.setMessage(Message.content(parm.get("pushContent")))//自定义信息
.build(); try {
PushResult pu = jpushClient.sendPush(payload); } catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
return e.getErrorMessage();      //抛出失败错误信息
}
return "success";
} //极光推送>>ios
//Map<String, String> parm是我自己传过来的参数,可以自定义参数
public static String jpushIOS(Map<String, String> parm) { //创建JPushClient
JPushClient jpushClient = new JPushClient(parm.get("masterSecret"), parm.get("appKey"));
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.ios())//ios平台的用户
.setAudience(Audience.all())//所有用户
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder()
.setAlert(parm.get("pushContent"))
// .setBadge(+1) //如设置此参数,则app端的角标会是此参数,不加此参数,则极光会自动的实现 +1 的功能
.setSound("default")
.addExtras(parm)
.build())
.build())
.setOptions(Options.newBuilder().setApnsProduction(true).build()) //false为开发环境;true为生产环境(ios由两种环境,需区别开来)
.setMessage(Message.newBuilder().setMsgContent(parm.get("pushContent")).addExtras(parm).build())//自定义信息
.build(); try {
PushResult pu = jpushClient.sendPush(payload); } catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
return e.getErrorMessage();
}
return "success";
} }

遇到的坑:需要在app端实现 +1 功能(推送一条信息,没有查看时,又推送了一条,此时,角标应该变为 2)最后的结果是  角标一直是 1,后来找到原因是参数设置问题:

  

极光推送官网文档:https://docs.jiguang.cn/jpush/server/sdk/java_sdk/

极光推送参考文章:https://blog.csdn.net/qq_35860097/article/details/75117323

微信支付:https://blog.csdn.net/zhouzhiwengang/article/details/56016043

java极光推送记录的更多相关文章

  1. java 极光推送

    Web.xml配置文件 <context-param> <param-name>contextConfigLocation</param-name> <par ...

  2. 极光推送-Java后台实现方式一:Http API

    Java后台实现极光推送有两种方式,一种是使用极光推送官方提供的推送请求API:https://api.jpush.cn/v3/push,另一种则是使用官方提供的第三方Java APIjar包,这里先 ...

  3. 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式

    原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6439313.html Java后台实现极光推送有两种方式,一种是使用极光推送官方提供的推送请 ...

  4. 极光推送>>java SDK服务端集成后台项目(使用详解)

    PS:如果你是第一次用推送,那就直接按照我的步骤来,再去看官方文档,这样,更容易能理解操作流程.还有——-请耐心看 极光文档(java SDK)请参考 [ 极光文档 ] 步骤一: 首先,你必须在 [极 ...

  5. 记录vue项目 用hbuilder离线打包集成极光推送 安卓篇

    极光推送的官方demo: https://github.com/jpush/jpush-hbuilder-demo 里面也记录有详细的方法了. 我记录下自己的过程. 首先去极光那里创建一个应用 获取A ...

  6. java SDK服务端推送 --极光推送(JPush)

    网址:https://blog.csdn.net/duyusean/article/details/86581475 消息推送在APP应用中越来越普遍,来记录一下项目中用到的一种推送方式,对于Andr ...

  7. Java整合极光推送 ( 简单 )

    Java 整合极光推送官方文档:https://github.com/jpush/jpush-api-java-client 这里记录一下简单的使用步骤:创建一个普通的 Maven 工程然后添加依赖 ...

  8. 1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco

    Android studio 集成极光推送(Jpush) (华为手机)报错, E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!] W/Sy ...

  9. JPush极光推送 Java调用服务器端API开发

       极光推送是:使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验.简单的说就是通过JPush后台管理网站进行app消息的推送.可以让用户及时 ...

随机推荐

  1. 爬虫模块之解决IO

    一 asyncio模块 asyncio模块:主要是帮我们检测IO(只能是网路IO). @asyncio.coroutine:装饰器 tasks:任务列表 get_event_loop:起任务 run_ ...

  2. JWT 理解

    概念: JWT是json web token缩写.它将用户信息加密到token里,服务器不保存任何用户信息.服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证. 优点是在分布式系统中, ...

  3. lambda表达式(c++11)

    1.概念 1)lambda表达式是一个可调用的代码单元,它由一个捕获列表.一个参数列表.一个箭头.一个返回类型.一个函数体组成: 2)可以忽略参数列表和返回类型,但必须包含捕获列表和函数体: 3)忽略 ...

  4. php $_SERVER中的一些选项说明

    1, $_SERVER['SCRIPT_FILENAME'] 和 常量 __FILE__的区别(一般情况下两者的显示相同,都是显示文件的绝对路径,包括文件名,显示的起点是 电脑根目录 /) ①,如果在 ...

  5. ubuntu彻底删除apache2 再重装

    删除apache2不彻底,导致用 apt-get install apache2 重新装时总是不成功.下面是如何彻底删除apache2 1. 删除apache 代码: $ sudo apt-get - ...

  6. 如何在CentOS7上安装Python3及对应问题

    首先一般来说安装好的CentOS是会自带python2.7,但是是没有安装python3的环境的 [root@host bin]# pwd /usr/bin [root@host bin]# ls p ...

  7. Kotlin入门

    转载自:https://www.cnblogs.com/jaymo/articles/6924144.html 创建类的实例 要创建一个类的实例,我们就像普通函数一样调用构造函数: 1 2 3 val ...

  8. Sql Server用户名和登录名的关系总结

    以前经常被SQL Server中的用户名和登录名搞迷糊,因为用sa(登录名)就搞定一切东西了,当然这会存在一些安全隐患.网上的文章也貌似讲得很好,但还是不明白.今天决心把这个问题弄明白.mashall ...

  9. day2(基础数据类型)

    一.基础数据类型操作 1.数字 int 数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以: int.bit_length() -> int Number of bits necess ...

  10. Cron连接正常工作5次后异常原因分析

    目录 目录 1 问题描述 1 分析定位 1 解决方法 2 附1:Cron工作流 3 附2:SIGPIPE发生的位置 3 如果一个shell命令的"$?"值为141,则它是收到了SI ...