極光推送簡介:
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;
}
}
終於寫完了 睡覺。