java 使用第三方推送 -- 极光推送

本文介绍如何使用Java实现极光推送功能,包括注册账号、创建应用、添加所需jar包及编写推送代码等步骤。

首先注册一个极光推送的账号,这个就不细说了

附上官网链接 : https://www.jiguang.cn/

注册完成登录后,点击创建应用

创建完成后,记住AppKey 与 Master Secret 后面会用到

接下来,我们打开java开发工具,创建一个maven项目,不会的朋友自行百度

在pom.xml中添加极光推送所需要的jar包

<dependency>
	<groupId>cn.jpush.api</groupId>
	<artifactId>jpush-client</artifactId>
	<version>3.2.17</version>
</dependency>
<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>

待jar包下载完成后

我们来创建两个类

JPush是极光推送的功能实现,demo是我们的测试类

进入JPush.java

创建两个常量,AppKey 与 Master Secret

	// 设置好账号的app_key和masterSecret是必须的
	private static String APP_KEY = "XXXXXXXXXXXXXXXXXX";
	private static String MASTER_SECRET = "XXXXXXXXXXXXXXXX";

接下来是平台推送功能的实现,注释很详细,我就不细说了

android

	//极光推送>>Android
	//Map<String, String> parm是我自己传过来的参数,同学们可以自定义参数
	public static void jpushAndroid(Map<String, String> parm) {

		//创建JPushClient(极光推送的实例)
		JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
		//推送的关键,构造一个payload 
		PushPayload payload = PushPayload.newBuilder()
				.setPlatform(Platform.android())//指定android平台的用户
				.setAudience(Audience.all())//你项目中的所有用户
				//.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用户
				.setNotification(Notification.android(parm.get("msg"), "这是title", parm))
				//发送内容
				.setOptions(Options.newBuilder().setApnsProduction(false).build())
				//这里是指定开发环境,不用设置也没关系
				.setMessage(Message.content(parm.get("msg")))//自定义信息
				.build();

		try {
			PushResult pu = jpushClient.sendPush(payload);  
		} catch (APIConnectionException e) {
			e.printStackTrace();
		} catch (APIRequestException e) {
			e.printStackTrace();
		}    
	}

ios

	//极光推送>>ios
	//Map<String, String> parm是我自己传过来的参数,同学们可以自定义参数
	public static  void jpushIOS(Map<String, String> parm) {

		//创建JPushClient
		JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
		PushPayload payload = PushPayload.newBuilder()
				.setPlatform(Platform.ios())//ios平台的用户
				.setAudience(Audience.all())//所有用户
				//.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用户
				.setNotification(Notification.newBuilder()
						.addPlatformNotification(IosNotification.newBuilder()
								.setAlert(parm.get("msg"))
								.setBadge(+1)
								.setSound("happy")//这里是设置提示音(更多可以去官网看看)
								.addExtras(parm)
								.build())
						.build())
				.setOptions(Options.newBuilder().setApnsProduction(false).build())
				.setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
				.build();

		try {
			PushResult pu = jpushClient.sendPush(payload);

		} catch (APIConnectionException e) {
			e.printStackTrace();
		} catch (APIRequestException e) {
			e.printStackTrace();
		}    
	}

如果平台很多的话,可以使用全平台推送

	//极光推送>>All所有平台
	public static void jpushAll(Map<String, String> parm) {

		//创建JPushClient
		JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
		//创建option
		PushPayload payload = PushPayload.newBuilder()
				.setPlatform(Platform.all())  //所有平台的用户
				.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用户
				.setNotification(Notification.newBuilder()
						.addPlatformNotification(IosNotification.newBuilder() //发送ios
								.setAlert(parm.get("msg")) //消息体
								.setBadge(+1)
								.setSound("happy") //ios提示音
								.addExtras(parm) //附加参数
								.build())
						.addPlatformNotification(AndroidNotification.newBuilder() //发送android
								.addExtras(parm) //附加参数
								.setAlert(parm.get("msg")) //消息体
								.build())
						.build())
				.setOptions(Options.newBuilder().setApnsProduction(true).build())//指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式)
				.setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
				.build();
		try {
			PushResult pu = jpushClient.sendPush(payload);
			System.out.println(pu.toString());
		} catch (APIConnectionException e) {
			e.printStackTrace();
		} catch (APIRequestException e) {
			e.printStackTrace();
		}    
	}

这样我们的推送功能就完成了

接下来我们来测试推送功能

demo.java

再三强调,rid是移动端通过api获取的,没有rid是没法推送的(想测试的和移动端商量)

public class demo {
	
	public static void main(String[] args) {

		//设置推送参数
		//这里同学们就可以自定义推送参数了
		Map<String, String> parm = new HashMap<String, String>();
		//这里的id是,移动端集成极光并登陆后,极光用户的rid
		parm.put("id", "XXXXXXXXXXXXXXXX");
		//设置提示信息,内容是文章标题
		parm.put("msg","测试测试,收到请联系发送人");
		JPush.jpushAll(parm);

	}
}

运行测试类

状态码等于0,说明推送成功

接下来我们登录极光推送后台,查看消息是否成功推送

登录后,点击应用的右下角 的 推送按钮 进入推送后台界面

由于我们是使用java api实现推送,所以消息类型应该选择 Api

进入api消息推送界面后,我们发现有一条消息

对应代码查看是否是先前推送的消息

对比发现,就是我们先前推送的消息

这样我们 使用 java 实现第三方 极光推送 功能就完成了,小伙伴们可以稍作修改,集成到各自的项目里

注意  AppKey 与 Master Secret 切记不要填错 , 出现什么问题也要首先检查 AppKey 与 Master Secret 是否填错

项目地址 : JPush-demo

评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的狮子Li

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值