public class PushAppUtil { private static Logger log = LoggerFactory.getLogger(PushAppUtil.class); private static String appkey = null; private static String masterSecret = null; private static String timestamp = null; private static String validationToken = null; // The host private static final String host = "http://msg.umeng.com"; // // The upload path// private static final String uploadPath = "/upload"; // The post path private static final String postPath = "/api/send"; // The user agent private static final String USER_AGENT = "Mozilla/5.0"; static { try { appkey = "yourappkey"; masterSecret = "yoursecret"; timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000)); // Generate MD5 of appkey, masterSecret and timestamp as validation_token validationToken = DigestUtils.md5Hex(appkey.toLowerCase() + masterSecret.toLowerCase() + timestamp); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } public static void sendAndroidBroadcast(String ticker, String title, String text, String action) throws Exception { TutorMessage message = new TutorMessage(); message.setAppkey(appkey); message.setTimestamp(timestamp); message.setValidationToken(validationToken); message.setType("broadcast"); message.setTicker(ticker); message.setTitle(title); message.setText(text); message.setAfterOpen("go_app"); message.setDisplayType("notification"); // Set 'production_mode' to 'false' if it's a test device. // For how to register a test device, please see the developer doc. message.setProductionMode("true"); // Set customized fields message.setTutorAction(action); ObjectMapper mapper = new ObjectMapper(); String result = mapper.writeValueAsString(message); send(result); } private static boolean send(String message) throws Exception { HttpClient client = new HttpClient(); String url = host + postPath; PostMethod post = new PostMethod(url); post.setRequestHeader("User-Agent", USER_AGENT); RequestEntity se = new StringRequestEntity(message, "UTF-8", "UTF-8"); log.debug(message); post.setRequestEntity(se); // Send the post request and get the response int status = client.executeMethod(post); log.debug(post.getResponseBodyAsString()); if (status == 200) { log.debug("Response Code : " + status + ",Notification sent successfully."); return true; } else { log.debug("Response Code : " + status + ",Failed to send the notification!"); return false; } } public static void main(String[] args) { try { PushAppUtil.sendAndroidBroadcast("tricker", "title", "text", "0"); } catch (Exception ex) { ex.printStackTrace(); } }}
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)public class TutorMessage { private String appkey; private String timestamp; @JsonProperty("validation_token") private String validationToken; private String type; @JsonProperty("device_tokens") private String deviceTokens; private String alias; @JsonProperty("alias_type") private String aliasType; @JsonProperty("file_id") private String fileId; private String filter; @JsonProperty("production_mode") private String productionMode; private String feedback; private String description; @JsonProperty("thirdpartyId") private String thirdparty_id; private Payload payload; private Policy policy; @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public class Payload { @JsonProperty("display_type") private String displayType; private Body body; private Extra extra; public String getDisplayType() { return displayType; } public Body getBody() { return body; } public Extra getExtra() { return extra; } } @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public class Policy { @JsonProperty("start_time") private String startTime; @JsonProperty("expire_time") private String expireTime; @JsonProperty("max_send_num") private String maxSendNum; public String getStartTime() { return startTime; } public String getExpireTime() { return expireTime; } public String getMaxSendNum() { return maxSendNum; } } @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public class Body { private String ticker; private String title; private String text; @JsonProperty("builder_id") private String builderId; private String icon; private String largeIcon; private String img; @JsonProperty("play_vibrate") private String playVibrate; @JsonProperty("play_lights") private String playLights; @JsonProperty("play_sound") private String playSound; private String sound; @JsonProperty("after_open") private String afterOpen; private String url; private String activity; private String custom; public String getTicker() { return ticker; } public String getTitle() { return title; } public String getText() { return text; } public String getBuilderId() { return builderId; } public String getIcon() { return icon; } public String getLargeIcon() { return largeIcon; } public String getImg() { return img; } public String getPlayVibrate() { return playVibrate; } public String getPlayLights() { return playLights; } public String getPlaySound() { return playSound; } public String getSound() { return sound; } public String getAfterOpen() { return afterOpen; } public String getUrl() { return url; } public String getActivity() { return activity; } public String getCustom() { return custom; } } @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public class Extra { @JsonProperty("tutor_action") private String tutorAction; public String getTutorAction() { return tutorAction; } } public String getAppkey() { return appkey; } public String getTimestamp() { return timestamp; } public String getValidationToken() { return validationToken; } public String getType() { return type; } public String getDeviceTokens() { return deviceTokens; } public String getAlias() { return alias; } public String getAliasType() { return aliasType; } public String getFileId() { return fileId; } public String getFilter() { return filter; } public String getProductionMode() { return productionMode; } public String getFeedback() { return feedback; } public String getDescription() { return description; } public String getThirdparty_id() { return thirdparty_id; } public Payload getPayload() { return payload; } public void setAppkey(String appkey) { this.appkey = appkey; } public void setTimestamp(String timestamp) { this.timestamp = timestamp; } public void setValidationToken(String validationToken) { this.validationToken = validationToken; } public void setType(String type) { this.type = type; } public void setDeviceTokens(String deviceTokens) { this.deviceTokens = deviceTokens; } public void setAlias(String alias) { this.alias = alias; } public void setAliasType(String aliasType) { this.aliasType = aliasType; } public void setFileId(String fileId) { this.fileId = fileId; } public void setFilter(String filter) { this.filter = filter; } public void setProductionMode(String productionMode) { this.productionMode = productionMode; } public void setFeedback(String feedback) { this.feedback = feedback; } public void setDescription(String description) { this.description = description; } public void setThirdparty_id(String thirdparty_id) { this.thirdparty_id = thirdparty_id; } public void setPayload(Payload payload) { this.payload = payload; } public void setPolicy(Policy policy) { this.policy = policy; } public void setDisplayType(String displayType) { if(payload == null) { payload = new Payload(); } this.payload.displayType = displayType; } public void setStartTime(String startTime) { if(policy == null) { policy = new Policy(); } this.policy.startTime = startTime; } public void setExpireTime(String expireTime) { if(policy == null) { policy = new Policy(); } this.policy.expireTime = expireTime; } public void setMaxSendNum(String maxSendNum) { if(policy == null) { policy = new Policy(); } this.policy.maxSendNum = maxSendNum; } public void setTicker(String ticker) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.ticker = ticker; } public void setTitle(String title) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.title = title; } public void setText(String text) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.text = text; } public void setBuilderId(String builderId) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.builderId = builderId; } public void setIcon(String icon) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.icon = icon; } public void setLargeIcon(String largeIcon) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.largeIcon = largeIcon; } public void setImg(String img) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.img = img; } public void setPlayVibrate(String playVibrate) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.playVibrate = playVibrate; } public void setPlayLights(String playLights) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.playLights = playLights; } public void setPlaySound(String playSound) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.playSound = playSound; } public void setSound(String sound) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.sound = sound; } public void setAfterOpen(String afterOpen) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.afterOpen = afterOpen; } public void setUrl(String url) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.url = url; } public void setActivity(String activity) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.activity = activity; } public void setCustom(String custom) { if(payload == null) { payload = new Payload(); } if(payload.body == null) { payload.body = new Body(); } this.payload.body.custom = custom; } public void setTutorAction(String tutorAction) { if(payload == null) { payload = new Payload(); } if(payload.extra == null) { payload.extra = new Extra(); } this.payload.extra.tutorAction = tutorAction; } }