Java极光推送
首先需要在極光推送官網:推送控制臺創(chuàng)建AppKey和Master Secret(包名隨便寫一個會自動生成測試包),并下載對應的APP安裝包測試Java代碼能否正確推送
?
集成maven依賴
<dependency><groupId>cn.jpush.api</groupId><artifactId>jiguang-common</artifactId><version>1.1.3</version> </dependency> <dependency><groupId>cn.jpush.api</groupId><artifactId>jpush-client</artifactId><version>3.3.9</version> </dependency>由于官方也沒有將Java對應API整理好文檔,故為方便以后使用特此整理如下
| ? | 功能 | 方法 | |
| Push API | 推送 | sendPush(PushPayload pushPayload) | |
| 推送校驗 | sendPushValidate(PushPayload payload) | ||
| 推送唯一標識符 | getCidList(int count, String type) | ||
| Report API | 送達統(tǒng)計 | getReportReceiveds(String msgIds) | |
| 送達狀態(tài)查詢 | getMessageStatus(CheckMessagePayload payload) | ||
| 消息統(tǒng)計(vip可用) | getReportMessages(String msgIds) | ||
| 用戶統(tǒng)計(vip可用) | getReportUsers(TimeUnit timeUnit, String start, int duration) | ||
| Device API | 查詢設備的別名與標簽 | getDeviceTagAlias(String registrationId) | |
| 設置設備的別名與標簽 | updateDeviceTagAlias(String registrationId, String alias,Set<String> tagsToAdd, Set<String> tagsToRemove) | ||
| 清楚所有別名和標簽 | updateDeviceTagAlias(String registrationId, boolean clearAlias, boolean clearTag) | ||
| 查詢別名 | ?getAliasDeviceList(String alias,String platform) | ||
| 刪除別名 | deleteAlias(String alias, String platform) | ||
| 查詢標簽列表 | getTagList() | ||
| 更新標簽 | addRemoveDevicesFromTag(String theTag,Set<String> toAddUsers, Set<String> toRemoveUsers) | ||
| 刪除標簽 | deleteTag(String theTag, String platform) | ||
| 判斷設備與標簽綁定關系 | isDeviceInTag(String theTag, String registrationID) | ||
| 獲取用戶在線狀態(tài)(vip可用) | getUserOnlineStatus(String... registrationIds) | ||
demo代碼
package com.jpush;import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cn.jiguang.common.ClientConfig; import cn.jiguang.common.connection.HttpProxy; import cn.jiguang.common.resp.APIConnectionException; import cn.jiguang.common.resp.APIRequestException; import cn.jpush.api.JPushClient; import cn.jpush.api.push.PushResult; import cn.jpush.api.push.model.Message; import cn.jpush.api.push.model.Options; 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;public class Jpush {protected static final Logger LOG = LoggerFactory.getLogger(Jpush.class);protected static final String APP_KEY = "3c3aac234abd0d66cba05ed7";protected static final String MASTER_SECRET = "1a0a7a22ac56b272d86b4452";protected ClientConfig clientConfig = ClientConfig.getInstance();protected HttpProxy proxy = null;protected JPushClient jPushClient = null;public static void main(String[] args) {Jpush jpush = new Jpush();jpush.push("消息標題", "哈哈哈", "", Audience.all(), new HashMap<String, String>());}public JPushClient getJPushClient(){//代理設置proxy = new HttpProxy("192.168.100.36", 8088);clientConfig = ClientConfig.getInstance();jPushClient = new JPushClient(MASTER_SECRET, APP_KEY, proxy, clientConfig);return jPushClient;}public PushResult push(String title, String message, String extras,Audience audience, Map<String, String> map) { PushResult result = null;try {result = getJPushClient().sendPushValidate(buildPushObject_android_and_ios(title, message, extras, audience, map));System.out.println(result);return result;} catch (APIConnectionException e) {LOG.error(e.getMessage(), e);} catch (APIRequestException e) {LOG.error(e.getMessage(), e);} catch (Exception e) {LOG.error(e.getMessage(), e);}return result;}/*** * @Description: * @param title 標題* @param message 消息內容* @param extras 額外字段* @param audience 推送設備指定* @param map 自定義消息map集合* @return*/public PushPayload buildPushObject_android_and_ios(String title,String message, String extras, Audience audience,Map<String, String> map) {return PushPayload.newBuilder().setPlatform(Platform.android_ios()).setAudience(audience).setNotification(Notification.newBuilder().addPlatformNotification(AndroidNotification.newBuilder().setTitle(title).setAlert(message).addExtra("extras", extras).build()).addPlatformNotification(IosNotification.newBuilder().setAlert(message).setMutableContent(true).addExtra("extras", extras).build()).build()).setMessage(Message.newBuilder().setMsgContent("自定義消息內容").setTitle("自定義消息標題").addExtras(map).build()).setOptions(Options.newBuilder().setApnsProduction(false)// 僅僅對于IOS生效.false開發(fā)環(huán)境.build()).build();} }?
總結
- 上一篇: Laravel中的Blade模版
- 下一篇: java美元兑换,(Java实现) 美元