極光推送—服務端

極光推送簡介:

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;
	}
}

終於寫完了 睡覺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章