JPush极光推送个人理解
2015-05-05 14:32
330 查看
个人代码例子 package com.lchy.xwx.mq.common.Jdpush; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.lchy.xwx.mq.util.ReadConfigUtil; import cn.jpush.api.JPushClient; import cn.jpush.api.common.TimeUnit; import cn.jpush.api.common.resp.APIConnectionException; import cn.jpush.api.common.resp.APIRequestException; import cn.jpush.api.push.PushResult; import cn.jpush.api.push.model.Message; import cn.jpush.api.push.model.Platform; import cn.jpush.api.push.model.PushPayload; import cn.jpush.api.push.model.audience.Audience; import cn.jpush.api.push.model.notification.AndroidNotification; import cn.jpush.api.push.model.notification.IosNotification; import cn.jpush.api.push.model.notification.Notification; import cn.jpush.api.push.model.notification.WinphoneNotification; import cn.jpush.api.report.ReceivedsResult; import cn.jpush.api.report.ReceivedsResult.Received; import cn.jpush.api.report.UsersResult; public class Jdpush { protected static final Logger log = LoggerFactory.getLogger(Jdpush.class); // demo App defined in resources/jpush-api.conf private static final ReadConfigUtil config = ReadConfigUtil.getInstance(); private static final String APPKEY = config.getValue("jpush.appkey"); private static final String MASTERSECRET = config.getValue("jpush.mastersecret"); private static final String DAY = config.getValue("jpush.offlineday"); public static JPushClient jpushClient = null; /** * 推送通知接口 * @param alias 别名 * @param tags tag数组 * @param title 推送标题 * @param btype 推送类型 * @param content 推送内容 */ public static void sendPushNotice(String alias, String[] tags, String title, String btype, String content) { jpushClient = new JPushClient(MASTERSECRET, APPKEY, Integer.valueOf(DAY)); PushPayload payload = null; // 生成推送的内容,这里我们先测试全部推送 // 通知提示信息 if (content != null) { Map<String, String> map = new HashMap<String, String>(); map.put("btype", btype); // 根据别名推送 if (alias != null && tags == null) { payload = buldPushObject_all_all_alias(alias, title, content, map); } else if (alias == null && tags != null) { // 根据tag[]推送 payload = buldPushObject_all_all_tag(tags, title, content, map); } else if (alias != null && tags != null) { // 别名和tags[] 推送通知 payload = buldPushObject_all_all_aliasAndTag(alias, tags, title, content, map); } else if (alias == null && tags == null) { payload = buldPushObject_all_all(title, content, map); } } else { log.info("No notification - " + content); } try { System.out.println(payload.toString()); PushResult result = jpushClient.sendPush(payload); System.out.println(result.msg_id+ "................................"); log.info("Got result - " + result); } catch (APIConnectionException e) { log.error("Connection error. Should retry later. ", e); } catch (APIRequestException e) { log.error("Error response from JPush server. Should review and fix it. ", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); log.info("Msg ID: " + e.getMsgId()); } } /** * 推送自定义消息接口.根据别名修改标签(tag) * @param alias 别名 * @param content 推送内容 */ public static void sendPushMessage(String alias, String content) { jpushClient = new JPushClient(MASTERSECRET, APPKEY, Integer.valueOf(DAY)); PushPayload payload = null; // For push, all you need do is to build PushPayload object. // PushPayload payload = buildPushObject_all_all_alert(); // 判断用户别名和tag不为空的情况下才推送修改标签(tag) if (content != null && alias != null) { payload = PushPayload.newBuilder() .setAudience(Audience.alias(alias)) .setPlatform(Platform.all()) .setMessage(Message.content(content)).build(); } else { log.info("No notification - " + content); } try { System.out.println(payload.toString()); PushResult result = jpushClient.sendPush(payload); System.out.println(result + "................................"); log.info("Got result - " + result); } catch (APIConnectionException e) { log.error("Connection error. Should retry later. ", e); } catch (APIRequestException e) { log.error("Error response from JPush server. Should review and fix it. ", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); log.info("Msg ID: " + e.getMsgId()); } } /** * 查询记录推送成功条数 * @param mid */ public static void countPush(String mid) { jpushClient = new JPushClient(MASTERSECRET, APPKEY, Integer.valueOf(DAY)); PushPayload payload = null; try { ReceivedsResult result = jpushClient.getReportReceiveds(mid); Received received = result.received_list.get(0); System.out.println("android_received:" + received.android_received + "\nios:" + received.ios_apns_sent); log.debug("Got result - " + result); } catch (APIConnectionException e) { // Connection error, should retry later log.error("Connection error, should retry later", e); } catch (APIRequestException e) { // Should review the error, and fix the request log.error("Should review the error, and fix the request", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); } } /** * 统计用户数据。需要vip用户才能访问 */ public static void getReportUser() { jpushClient = new JPushClient(MASTERSECRET, APPKEY, Integer.valueOf(DAY)); PushPayload payload = null; try { UsersResult result = jpushClient.getReportUsers(TimeUnit.DAY, "2015-04-28", 8); // Received received =result // System.out.println("android_received:"+received.android_received+"\nios:"+received.ios_apns_sent); log.debug("Got result - " + result); } catch (APIConnectionException e) { // Connection error, should retry later log.error("Connection error, should retry later", e); } catch (APIRequestException e) { // Should review the error, and fix the request log.error("Should review the error, and fix the request", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); } } /** * 根据别名通知推送 * @param alias 别名 * @param alert 推送内容 * @return */ public static PushPayload buldPushObject_all_all_alias(String alias, String title, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.alias(alias)) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(content) .addExtras(map).build()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(content) .addExtras(map).build()) .build()).build(); } /** * 根据tag通知推送 * @param alias 别名 * @param alert 推送内容 * @return */ public static PushPayload buldPushObject_all_all_tag(String[] tags, String title, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.tag(tags)) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(content) .addExtras(map).build()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(content) .addExtras(map).build()) .build()).build(); } /** * 根据tag通知推送 * @param alias 别名 * @param alert 推送内容 * @return */ public static PushPayload buldPushObject_all_all_aliasAndTag(String alias, String[] tags, String title, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.alias(alias)) .setAudience(Audience.tag(tags)) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(content) .addExtras(map).build()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(content) .addExtras(map).build()) .build()).build(); } /** * 根据通知推送 * @param alias 别名 * @param alert 推送内容 * @return */ public static PushPayload buldPushObject_all_all(String title, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.all()) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(content) .addExtras(map).bui b1cc ld()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(content) .addExtras(map).build()) .build()).build(); } }
MASTERSECRET、APPKEY //在Jpush申请应用时产生的
Integer.valueOf(DAY) //离线天数
jpushClient = new JPushClient(MASTERSECRET, APPKEY, Integer.valueOf(DAY)); //创建jpush对象
PushPayload
.newBuilder()
.setPlatform(Platform.all()) //推送设备类型,比如android、ios、Winphone等设备
.setAudience(Audience.alias(alias)) //设备的别名
.setNotification( //推送通知消息的几种设备中,需要提供标题(title),内容(content),以及附加字段(map)。
Notification
.newBuilder()
.addPlatformNotification(
IosNotification.newBuilder()
.setAlert(content)
.addExtras(map).build())
.addPlatformNotification(
AndroidNotification.newBuilder()
.setAlert(content)
.setTitle(title).addExtras(map)
.build())
.addPlatformNotification(
WinphoneNotification.newBuilder()
.setAlert(content)
.addExtras(map).build())
.build()).build();
极光api
相关文章推荐
- JPush极光推送个人理解
- jPush 极光推送的理解
- jPush 极光推送的理解
- JPush极光推送 Java调用服务器端API开发
- Android消息推送——JPush极光推送
- JPush 极光推送 消息推送 实例
- 极光推送JPush客户端与服务器端的集成
- JPush(极光)推送相关整理 - Android
- Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco
- jpush极光推送知识点总结
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
- Mac下极光推送问题 :Can not connect to JPush Server. Please ensure your internet connect
- JPush极光推送快速创建Android Demo
- Android JPush极光推送应用
- 迅速集成Jpush极光推送功能
- android消息推送---JPush(极光推送)
- Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtocol
- Swift - JPush极光推送的使用3(根据Alias别名,给某个指定用户发推送)(转)
- Android JPush(极光推送)的使用教程
- iOS第三方集成之jpush极光推送