您的位置:首页 > 编程语言 > Java开发

JPush极光推送 Java服务器端Demo

2017-02-10 00:09 411 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。

我们知道iOS有自己的推送服务,但很遗憾Android没有原生的推送服务,现在有很多第三方的推送服务,比如个推、极光、亚马逊、百度云、聚能等。今天我们就来研究下极光推送的后台服务器如何实现。

极光推送(JPush)是独立的第三方云推送平台,致力于为全球移动应用开发者提供专业、高效的移动消息推送服务。

OK 下面直接来看代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cn.jiguang.common.ClientConfig;
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.audience.AudienceTarget;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

public class Test {

protected static final Logger LOG = LoggerFactory.getLogger(Test.class);

// demo App defined in resources/jpush-api.conf

public static final String TITLE = "我是TITLE";
public static final String ALERT = "我是ALERT";
public static final String MSG_CONTENT = "我是MSG_CONTENT";
public static final String REGISTRATION_ID = "0900e8d85ef";
public static final String TAG = "tag_api";

private static String masterSecret = "d0da3fc459ddb6b5fa8acc95";
private static String appKey = "11f46d7cffe4ef99b554e35b";

public static JPushClient jpushClient = null;

public static void main(String[] args) {

jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());

// For push, all you need do is to build PushPayload object.
// 生成推送的内容,这里我们先测试全部推送
PushPayload payload = buildPushObject_all_alias_alert();

try {
System.out.println(payload.toString());
PushResult result = jpushClient.sendPush(payload);
System.out.println(result.toString());

LOG.info("Got result - " + result);

} catch (APIConnectionException e) {
// Connection error, should retry later
LOG.error("Connection error, should retry later", e);

} catch (APIRequestException e) {
// Should review the error, and fix the request
LOG.error("Should review the error, and fix the request", e);
LOG.info("HTTP Status: " + e.getStatus());
LOG.info("Error Code: " + e.getErrorCode());
LOG.info("Error Message: " + e.getErrorMessage());
}
}

/**
* 快捷地构建推送对象:所有平台,所有设备,内容为 ALERT 的通知。
* @return
*/
public static PushPayload buildPushObject_all_all_alert() {
return PushPayload.alertAll(ALERT);
}

/**
* 构建推送对象:所有平台,推送目标是别名为 "alias1",通知内容为 ALERT。
* @return
*/
public static PushPayload buildPushObject_all_alias_alert() {
return PushPayload.newBuilder()
.setPlatform(Platform.all())// 设置接受的平台
.setAudience(Audience.all())// Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
.setNotification(Notification.alert(ALERT))
.build();
}

/**
* 构建推送对象:平台是 Android,目标是 tag 为 "tag1" 的设备,内容是 Android 通知 ALERT,并且标题为 TITLE。
* @return
*/
public static PushPayload buildPushObject_android_tag_alertWithTitle() {
return PushPayload.newBuilder()
.setPlatform(Platform.android())
.setAudience(Audience.all())
.setNotification(Notification.android(ALERT, TITLE, null))
.build();
}

/**
* 构建推送对象:平台是 iOS,推送目标是 "tag1", "tag_all" 的交集,
* 推送内容同时包括通知与消息 - 通知信息是 ALERT,角标数字为 5,通知声音为 "happy",
* 并且附加字段 from = "JPush";消息内容是 MSG_CONTENT。通知是 APNs 推送通道的,
* 消息是 JPush 应用内消息通道的。APNs 的推送环境是“生产”(如果不显式设置的话,Library 会默认指定为开发)
* @return
*/
public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {
return PushPayload.newBuilder()
.setPlatform(Platform.ios())
.setAudience(Audience.tag_and("tag1", "tag_all"))
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder()
.setAlert(ALERT)
.setBadge(5)
.setSound("happy")
.addExtra("from", "JPush")
.build())
.build())
.setMessage(Message.content(MSG_CONTENT))
.setOptions(Options.newBuilder()
.setApnsProduction(true)
.build())
.build();
}

/**
* 构建推送对象:平台是 Andorid 与 iOS,
* 推送目标是 ("tag1" 与 "tag2" 的并集)交("alias1" 与 "alias2" 的并集),
* 推送内容是 - 内容为 MSG_CONTENT 的消息,并且附加字段 from = JPush。
* @return
*/
public static PushPayload buildPushObject_android_and_ios() {
return PushPayload.newBuilder().setPlatform(Platform.android_ios()).setAudience(Audience.tag("tag1"))
.setNotification(Notification.newBuilder().setAlert("alert content")
.addPlatformNotification(AndroidNotification.newBuilder().setTitle("Android Title").build())
.addPlatformNotification(
IosNotification.newBuilder().incrBadge(1).addExtra("extra_key", "extra_value").build())
.build())
.build();
}

/**
* 构建推送对象:推送内容包含SMS信息
* @return
*/
public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {
return PushPayload.newBuilder().setPlatform(Platform.android_ios())
.setAudience(Audience.newBuilder().addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))
.addAudienceTarget(AudienceTarget.alias("alias1", "alias2")).build())
.setMessage(Message.newBuilder().setMsgContent(MSG_CONTENT).addExtra("from", "JPush").build()).build();
}
}


附上源码下载:http://download.csdn.net/detail/pingxiaogai/9751338
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  极光推送