package com.cku.jpush;

import cn.jpush.api.JPushClient;
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.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.Notification;

import com.cku.util.MD5Generator;
import com.cku.util.SysConfig;
import com.cku.jpush.JpushNotification;

public class PushUtils {
    public static String jpushMasterSecret = "";
    public static String jpushAppKey = "";
    public static boolean isDebug = false;
    public final static String SAIL = "cab";
    static {
        jpushMasterSecret = SysConfig.getInstance().getProperty("jpushMasterSecret");
        jpushAppKey = SysConfig.getInstance().getProperty("jpushAppKey");
        //苹果true为正式，false为测试，安卓不支持，
        isDebug = "true".equals(SysConfig.getInstance().getProperty("jpushApns"))?true:false;
    }
    public static JPushClient jpushClient = new JPushClient(jpushMasterSecret, jpushAppKey);

    public static String getShowId(String userId){
    	return MD5Generator.generate(SAIL+userId).substring(8,24);
    }
        /**
         * 发送-通知-所有设备
         * @param notification
         */
        public static void push_all_notification(JpushNotification notification){
            PushPayload payloadAndroid = PushPayload.newBuilder()
                    .setPlatform(Platform.android())
                    .setAudience(Audience.all())
                    .setOptions(Options.newBuilder()
                            .setApnsProduction(isDebug)
                            .build())
                    .setNotification(Notification.android(notification.getAlert(),notification.getTitle(),notification.getExtras())).build();
            PushPayload payloadIos = PushPayload.newBuilder()
                    .setPlatform(Platform.ios())
                    .setAudience(Audience.all())
                    .setOptions(Options.newBuilder()
                            .setApnsProduction(isDebug)
                            .build())
                    .setNotification(Notification.ios(notification.getAlert(),notification.getExtras())).build();
            try {
                PushResult resultAndroid = jpushClient.sendPush(payloadAndroid);
                PushResult resultIos = jpushClient.sendPush(payloadIos);
                System.out.println("resultAndroid"+resultAndroid);
                System.out.println("resultIos"+resultIos);
            } catch (APIConnectionException e) {
                e.printStackTrace();
            } catch (APIRequestException e) {
                e.printStackTrace();
            }
        }

    /**
     * 发送别名通知
     * @param alias
     * @param notification
     */
        public static void push_alias_notification(String alias,String notification){
            PushPayload payload = PushPayload.newBuilder()
                    .setPlatform(Platform.all())
                    .setAudience(Audience.alias(alias))
                    .setNotification(Notification.alert(notification))

                    .setOptions(Options.newBuilder()
                            .setApnsProduction(isDebug)
                            .build())
                    .build();
            try {
                jpushClient.sendPush(payload);
            } catch (APIConnectionException e) {
                e.printStackTrace();
            } catch (APIRequestException e) {
                e.printStackTrace();
            }
        }

}
