极光推送简介:
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; } }
终于写完了 睡觉。