极光推送—服务端

极光推送简介:

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

终于写完了 睡觉。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值