極光推送服務端

極光推送的APP_KEY和MASTER_SECRET須要再極光推送官網註冊後生成,java

1.先生成推送平臺android

2.推送的內容再生成平臺時生成ios

public static void main(String[] args) {
        PushPayload payload = JpushUtil.buildAndroidAndIOSPayload( "呵呵");
        JpushUtil.pushMsgWithCallback(payload, MASTER_SECRET, APP_KEY);
    }windows

package com.tempetek.client.common;api

import io.netty.handler.codec.http.HttpMethod;app

import java.net.URI;異步

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;ide

import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.ServiceHelper;
import cn.jiguang.common.connection.NettyHttpClient;
import cn.jiguang.common.resp.ResponseWrapper;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
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.Notification;工具

/**
 * 
 * @description 極光推送工具類
 * @author lipinxian
 * @date 2017年2月28日下午7:02:05
 */
public class JpushUtil {
    protected static final Logger LOG = LoggerFactory.getLogger(JpushUtil.class);
//    public final static String APP_KEY = "4f68dced44297cfa85da8b68";
//    public final static String MASTER_SECRET = "035ce832f2ad7fd3a27c5535";
    /**
     * 
     * @description 使用NettyHttpClient異步接口發送請求
     * @author lipinxian
     * @date 2017年3月1日下午1:45:21
     * @param pushPayload 推送對象
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     */
    public static void pushMsgWithCallback(PushPayload pushPayload, String masterSecret, String appKey) {
        ClientConfig clientConfig = ClientConfig.getInstance();
        String host = (String)clientConfig.get(ClientConfig.PUSH_HOST_NAME);
        final NettyHttpClient client = new NettyHttpClient(ServiceHelper.getBasicAuthorization(appKey, masterSecret), null, clientConfig);
        
        try {
            URI uri = new URI(host + clientConfig.get(ClientConfig.PUSH_PATH));
            client.sendRequest(HttpMethod.POST, pushPayload.toString(), uri, new NettyHttpClient.BaseCallback() {
                @Override
                public void onSucceed(ResponseWrapper arg0) {
                    // TODO Auto-generated method stub
                    LOG.info("pushMsgWithCallback的結果:" + arg0.responseContent);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            LOG.info("pushMsgWithCallback失敗:" + e.getMessage());
        } finally {
            client.close();
        }
    }
    
    /**
     * 
     * @description 根據別名往IOS和Android上推送消息
     * @author lipinxian
     * @date 2017年3月1日下午3:35:30
     * @param alias 別名
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     * @param alert 推送內容
     */
    public static void pushMsgToAndroidAndIOSAlias(String alias, String masterSecret, String appKey, String alert) {
        PushPayload pushPayload = buildAndroidAndIOSPayloadAlias(alias, alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
            PushResult result = jpushClient.sendPush(pushPayload);
            LOG.info("pushMsgToAndroidAndIOSAlias的結果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.info("pushMsgToAndroidAndIOSAlias失敗:" + e.getMessage());
        }
    }
    
    /**
     * 
     * @description 往IOS和Android上推送消息
     * @author lipinxian
     * @date 2017年3月1日下午3:45:20
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     * @param alert 推送內容
     */
    public static void pushMsgToAndroidAndIOS(String masterSecret, String appKey, String alert) {
        PushPayload pushPayload = buildAndroidAndIOSPayload(alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
            PushResult result = jpushClient.sendPush(pushPayload);
            LOG.info("pushMsgToAndroidAndIOS的結果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.info("pushMsgToAndroidAndIOS失敗:" + e.getMessage());
        }
    }
    
    /**
     * 
     * @description 根據別名往特定的Android APP上推送消息
     * @author lipinxian
     * @date 2017年2月28日下午7:09:54
     * @param alias 別名
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     * @param alert 推送內容
     */
    public static void pushMsgToAndroidAlias(String alias, String masterSecret, String appKey, String alert) {
        PushPayload pushPayload = buildAndroidWinphonePayloadAlias(alias, alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
            PushResult result =  jpushClient.sendPush(pushPayload);
            LOG.info("pushMsgToAndroid的結果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.info("pushMsgToAndroid失敗:" + e.getMessage());
        }
    }
    
    /**
     * 
     * @description 往android APP上推送消息
     * @author lipinxian
     * @date 2017年3月1日下午3:49:10
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     * @param alert 推送內容
     */
    public static void pushMsgToAndroid(String masterSecret, String appKey, String alert) {
        PushPayload pushPayload = buildAndroidWinphonePayload(alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
            PushResult result =  jpushClient.sendPush(pushPayload);
            LOG.info("pushMsgToAndroid的結果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.info("pushMsgToAndroid失敗:" + e.getMessage());
        }
    }
    
    /**
     * 
     * @description 根據別名往特定的IOS APP上推送消息
     * @author lipinxian
     * @date 2017年2月28日下午7:18:51
     * @param alias 別名
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     * @param alert 推送內容
     */
    public static void pushMsgToIOSAlias(String alias, String masterSecret, String appKey, String alert) {
        PushPayload pushPayload = buildIOSPayloadAlias(alias, alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey);
            jpushClient.sendPush(pushPayload);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 
     * @description 往IOS APP上推送消息
     * @author lipinxian
     * @date 2017年3月1日下午3:50:12
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     * @param alert 推送內容
     */
    public static void pushMsgToIOS(String masterSecret, String appKey, String alert) {
        PushPayload pushPayload = buildIOSPayload(alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey);
            jpushClient.sendPush(pushPayload);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 
     * @description 推送消息到全部平臺、全部設備
     * @author lipinxian
     * @date 2017年3月1日上午10:36:29
     * @param alert 推送內容
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     */
    public static void pushMsgToAll(String alert, String masterSecret, String appKey) {
        PushPayload pushPayload = buildPushAllPayload(alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey);
            PushResult result = jpushClient.sendPush(pushPayload);
            LOG.info("pushMsgToAll的結果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.info("pushMsgToAll失敗:" + e.getMessage());
        }
    }
    
    /**
     * 
     * @description 推送消息到全部平臺,且目標別名爲alias的設備
     * @author lipinxian
     * @date 2017年3月1日上午10:54:45
     * @param alias 別名
     * @param alert 推送內容
     * @param masterSecret Portal上註冊時生成的masterSecret
     * @param appKey Portal上註冊時生成的appKey
     */
    public static void pushMsgToAllAlias(String alias, String alert, String masterSecret, String appKey) {
        PushPayload pushPayload = buildPushAllPayloadAlias(alias, alert);
        
        try {
            JPushClient jpushClient = new JPushClient(masterSecret, appKey);
            PushResult result = jpushClient.sendPush(pushPayload);
            LOG.info("pushMsgToAllAlias的結果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.info("pushMsgToAllAlias失敗:" + e.getMessage());
        }
    }
    
    
    
    /**
     * 
     * @description 構建一個通知全部平臺的,全部設備的推送對象
     * @author lipinxian
     * @date 2017年2月28日下午7:01:29
     * @param alert 推送內容
     * @return
     */
    public static PushPayload buildPushAllPayload(String alert) {
        return PushPayload.alertAll(alert);
    }
    
    /**
     * 
     * @description 構建一個通知全部平臺,推送目標別名爲alias的推送對象
     * @author youmusen
     * @date 2017年3月1日上午9:22:50
     * @param alias 推送別名
     * @param alert 推送內容
     * @return 
     */
    public static PushPayload buildPushAllPayloadAlias(String alias, String alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.all()) //設置接收的平臺
                .setAudience(Audience.alias(alias))
                .setNotification(Notification.alert(alert))
                .build();
    }
    
    /**
     * 
     * @description 構建一個推送平臺爲IOS且推送目標別名爲alias的推送對象
     * @author lipinxian
     * @date 2017年2月28日下午6:53:18
     * @param alias 別名
     * @param alert 推送內容
     * @return
     */
    public static PushPayload buildIOSPayloadAlias(String alias, String alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.ios())
                .setAudience(Audience.alias(alias))
                .setNotification(Notification.newBuilder()
                        .setAlert(alert)
                        .build())
                .build();            
    }
    
    /**
     * 
     * @description 構建一個推送平臺爲IOS的推送對象
     * @author youmusen
     * @date 2017年3月1日下午3:48:14
     * @param alert 推送內容
     * @return
     */
    public static PushPayload buildIOSPayload(String alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.ios())
                .setAudience(Audience.all())
                .setNotification(Notification.newBuilder()
                        .setAlert(alert)
                        .build())
                .build();            
    }
    
    /**
     * 
     * @description 構建一個推送平臺爲Android和windows phone且推送目標別名爲alias的推送對象
     * @author lipinxian
     * @date 2017年2月28日下午6:58:28
     * @param alias 別名
     * @param alert 推送內容
     * @return
     */
    public static PushPayload buildAndroidWinphonePayloadAlias(String alias, String alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android())
                .setAudience(Audience.alias(alias))
                .setNotification(Notification.newBuilder()
                        .setAlert(alert)
                        .build())
                .build();
    }
    
    /**
     * 
     * @description 構建一個推送平臺爲Android和windows phone的推送對象
     * @author youmusen
     * @date 2017年3月1日下午3:47:19
     * @param alert 推送內容
     * @return
     */
    public static PushPayload buildAndroidWinphonePayload(String alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android())
                .setAudience(Audience.all())
                .setNotification(Notification.newBuilder()
                        .setAlert(alert)
                        .build())
                .build();
    }
    
    /**
     * 
     * @description 構建一個推送平臺爲Android和IOS且推送目標別名爲alias的推送對象
     * @author lipinxian
     * @date 2017年3月1日下午3:30:52
     * @param alias 別名
     * @param alert 推送內容
     * @return
     */
    public static PushPayload buildAndroidAndIOSPayloadAlias(String alias, String alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android_ios())
                .setAudience(Audience.alias(alias))
                .setNotification(Notification.newBuilder()
                        .setAlert(alert)
                        .build())
                .build();
    }
    
    /**
     * 
     * @description 構建一個推送平臺爲Android和IOS的推送對象
     * @author lipinxian
     * @date 2017年3月1日下午3:41:12
     * @param alert 推送內容
     * @return
     */
    public static PushPayload buildAndroidAndIOSPayload(String alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android_ios())
                .setAudience(Audience.all())
                .setNotification(Notification.newBuilder()
                        .setAlert(alert)
                        .build())
                .build();
    }
    
    
}ui

相關文章
相關標籤/搜索