极光推送简介:
JPush是一种专业而免费的第三方云推送推送平台,又名极光推送。
集成步骤:
登陆极光官网—>注册用户—>开发者服务—>立即体验—>创建自己的应用。
创建应用后你会看到两个关键字(了解一下):
Appkey:SDK与服务器端通过Appkey互相识别
Master Secret:用于服务器端 API 调用时与 AppKey 配合使用达到鉴权的目的
接下来我是通过maven方式导入JPush
maven 方式:
将下边的依赖条件放到你项目的 maven pom.xml 文件里
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.4</version>
</dependency>
然后就是根据业务需要进行推送咯,写的工具类如下:
/**
* 极光推送工具类
*/
public class JPushUtils {
//业务需要 这里有两个应用 一个是推给手机 另一个是推给大屏幕电视
private final static String PHONE_APP_KEY1 = "***************************";//输入应用的Appkey和Master Secret
private final static String PHONE_MASTER_SECRET1 = "***************************";
private final static String BIGSRCEEN_APP_KEY1= "***************************";
private final static String BIGSRCEEN_MASTER_SECRET1 = "***************************";
public final static int ANDROID_PLATFORM = 0;
public final static int IOS_PLATFORM = 1;
public final static int ANDROID_IOS_PLATFORM = 2;
public final static int ALL_PLATFORM = -1;
private static JPushClient jPushClient1;
private static JPushClient jPushClient2;
static {
jPushClient1 = new JPushClient(PHONE_MASTER_SECRET1, PHONE_APP_KEY1, null, ClientConfig.getInstance());
jPushClient2= new JPushClient(BIGSRCEEN_MASTER_SECRET1, BIGSRCEEN_APP_KEY1, null, ClientConfig.getInstance());
}
/**
* 构造能往设备发送通知(ALERT)的 PushPayload
*
* @param content
* 发送内容
* @param platform
* 接受平台
* @param title
* 安卓端可设置通知标题,若不需要则传入null即可
* @return
*/
private static PushPayload buildPushObject_all_alert(String content, int platform, String title) {
if (platform == ANDROID_PLATFORM) {
if (title != null) {
return PushPayload.newBuilder().setPlatform(Platform.android())
.setNotification(Notification.android(content, title, null)).setAudience(Audience.all())
.build();
} else {
return PushPayload.newBuilder().setPlatform(Platform.android())
.setNotification(Notification.alert(content)).setAudience(Audience.all()).build();
}
} else if (platform == IOS_PLATFORM) {
return PushPayload.newBuilder().setPlatform(Platform.ios()).setNotification(Notification.alert(content))
.setAudience(Audience.all()).build();
} else if (platform == ANDROID_IOS_PLATFORM) {
return PushPayload.newBuilder().setPlatform(Platform.android_ios())
.setNotification(Notification.alert(content)).setAudience(Audience.all()).build();
} else {
return PushPayload.newBuilder().setPlatform(Platform.all()).setNotification(Notification.alert(content))
.setAudience(Audience.all()).build();
}
}
/**
* 构造能往对应alias发送通知(ALERT)的PushPayload
*
* @param content
* 内容
* @param alias
* 别名
* @param platform
* 平台参数
* @param title
* 安卓端可设置通知标题,若不需要则传入null即可
* @return
*/
private static PushPayload buildPushObjcet_alias_alert(String content, String alias, int platform, String title) {
if (platform == ANDROID_PLATFORM) {
if (title != null) {
return PushPayload.newBuilder().setPlatform(Platform.android())
.setNotification(Notification.android(content, title, null)).setAudience(Audience.alias(alias))
.build();
} else {
return PushPayload.newBuilder().setPlatform(Platform.android())
.setNotification(Notification.alert(content)).setAudience(Audience.alias(alias)).build();
}
} else if (platform == IOS_PLATFORM) {
return PushPayload.newBuilder().setPlatform(Platform.ios()).setNotification(Notification.alert(content))
.setAudience(Audience.alias(alias)).build();
} else if (platform == ANDROID_IOS_PLATFORM) {
return PushPayload.newBuilder().setPlatform(Platform.android_ios())
.setNotification(Notification.alert(content)).setAudience(Audience.alias(alias)).build();
} else {
return PushPayload.newBuilder().setPlatform(Platform.all()).setNotification(Notification.alert(content))
.setAudience(Audience.alias(alias)).build();
}
}
/**
* 构造能往对应tag发送通知(ALERT)的PushPayload
*
* @param content
* 内容
* @param alias
* 别名
* @param platform
* 平台参数
* @param title
* 安卓端可设置通知标题,若不需要则传入null即可
* @return
*/
private static PushPayload buildPushObjcet_tag_alert(String content, String tag, int platform, String title) {
if (platform == ANDROID_PLATFORM) {
if (title != null) {
return PushPayload.newBuilder().setPlatform(Platform.android())
.setNotification(Notification.android(content, title, null)).setAudience(Audience.tag(tag))
.build();
} else {
return PushPayload.newBuilder().setPlatform(Platform.android())
.setNotification(Notification.alert(content)).setAudience(Audience.tag(tag)).build();
}
} else if (platform == IOS_PLATFORM) {
return PushPayload.newBuilder().setPlatform(Platform.ios()).setNotification(Notification.alert(content))
.setAudience(Audience.tag(tag)).build();
} else if (platform == ANDROID_IOS_PLATFORM) {
return PushPayload.newBuilder().setPlatform(Platform.android_ios())
.setNotification(Notification.alert(content)).setAudience(Audience.tag(tag)).build();
} else {
return PushPayload.newBuilder().setPlatform(Platform.all()).setNotification(Notification.alert(content))
.setAudience(Audience.tag(tag)).build();
}
}
/**
* 构造一个给registrationId 发送通知的PushPayload
* @param content 发送内容
* @param registrationId 接受用户的ID
* @return
*/
private static PushPayload buildPushObjcet_alertByRegistrationId(String content,String registrationId){
return PushPayload.newBuilder().setPlatform(Platform.all()).setNotification(Notification.alert(content)).setAudience(Audience.registrationId(registrationId)).build();
}
/**
* 构造一个给所有人发送通知的PushPayload
* @param content 发送内容
* @return
*/
private static PushPayload buildPushObjcet_alert_All(String content){
return PushPayload.newBuilder().setPlatform(Platform.all()).setMessage(Message.content(content)).setAudience(Audience.all()).build();
}
/**
* 构造一个给registrationId 发送消息的PushPayload
* @param content 发送内容
* @param registrationId 接受用户的ID
* @return
*/
private static PushPayload buildPushObjcet_msg_contentByRegistrationId(String content,String registrationId){
return PushPayload.newBuilder().setPlatform(Platform.all()).setMessage(Message.content(content)).setAudience(Audience.registrationId(registrationId)).build();
}
/**
* 构造广播发送消息的PushPayload
* @param content 发送内容
* @return
*/
private static PushPayload buildPushObjcet_msg_content(String content){
return PushPayload.newBuilder().setPlatform(Platform.all()).setMessage(Message.content(content)).setAudience(Audience.all()).build();
}
/**
* 用于给对应设备的所有用户发送通知
*
* @param content
* 需要发送的通知
* @param platform
* 需要发送的平台
* @param title
* 安卓端可设置通知标题,若不需要则传入null即可
* @return 发送是否成功
*/
public static boolean pushAllAlert(String content, int platform, String title) {
PushPayload pushPayload = buildPushObject_all_alert(content, platform, title);
try {
PushResult result = jPushClient1.sendPush(pushPayload);
int statusCode = result.statusCode;
jPushClient1.close();
if (statusCode == PushResult.ERROR_CODE_OK) {
return true;
}
} catch (APIConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (APIRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}
/**
* 用于给对应alias发送通知
*
* @param content
* 内容
* @param platform
* 平台
* @param title
* 安卓端可设置通知标题,若不需要则传入null即可
* @param alias
* 别名
* @return 发送是否成功
*/
public static boolean pushAlertByAlias(String content, int platform, String title, String alias) {
PushPayload pushPayload = buildPushObjcet_alias_alert(content, alias, platform, title);
try {
PushResult result = jPushClient1.sendPush(pushPayload);
jPushClient1.close();
if (result.statusCode == PushResult.ERROR_CODE_OK) {
return true;
}
} catch (APIConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (APIRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}
/**
* 用于给对应tag发送通知
*
* @param content
* 内容
* @param platform
* 平台
* @param title
* 安卓端可设置通知标题,若不需要则传入null即可
* @param alias
* 别名
* @return 发送是否成功
*/
public static boolean pushAlertByTag(String content, int platform, String title, String tag) {
PushPayload pushPayload = buildPushObjcet_tag_alert(content, tag, platform, title);
try {
PushResult result = jPushClient1.sendPush(pushPayload);
jPushClient1.close();
if (result.statusCode == PushResult.ERROR_CODE_OK) {
return true;
}
} catch (APIConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (APIRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}
/**
* 用于给对应的registrationId 发送通知
* @param content 内容
* @param registrationId 对应用户的Id
* @return 发送是否成功
*/
public static boolean pushAlertByRegistrationId(String content,String registrationId){
PushPayload pushPayload = buildPushObjcet_alertByRegistrationId(content, registrationId);
try {
PushResult result = jPushClient1.sendPush(pushPayload);
if(result.statusCode == PushResult.ERROR_CODE_OK){
return true;
}
} catch (APIConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (APIRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}
/**
* 用于给所有人发送消息
* @param content 内容
* @return 发送是否成功
*/
public static boolean pushMessageToAll(String content) {
PushPayload pushPayload = buildPushObjcet_alert_All(content);
try {
PushResult result = jPushClient1.sendPush(pushPayload);
if(result.statusCode == PushResult.ERROR_CODE_OK){
return true;
}
} catch (APIConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (APIRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}
/**
* 用于给对应的registrationId 发送消息
* @param content 内容
* @param registrationId 对应用户的Id
* @return 发送是否成功
*/
public static boolean pushMessageByRegistrationId(String content,String registrationId){
PushPayload pushPayload = buildPushObjcet_msg_contentByRegistrationId(content, registrationId);
try {
PushResult result = jPushClient1.sendPush(pushPayload);
if(result.statusCode == PushResult.ERROR_CODE_OK){
return true;
}
} catch (APIConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (APIRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}
/**
* 广播发送消息到到大屏幕
* @param content 内容
* @return 发送是否成功
*/
public static boolean pushMessageToBigScreen(String content){
PushPayload pushPayload = buildPushObjcet_msg_content(content);
try {
PushResult result = jPushClient2.sendPush(pushPayload);
if(result.statusCode == PushResult.ERROR_CODE_OK){
return true;
}
} catch (APIConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (APIRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}
}
终于写完了 睡觉。