ssm项目集成极光推送

import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
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.IosAlert;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;


import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 
 */
public class JpushService {
    private Boolean production = false;
    private JPushClient jPushClient;

    public JpushService(String appKey, String masterSecret, Boolean production) {
        this.production = production;
        jPushClient = new JPushClient(masterSecret, appKey);
    }

    /**
     * 推送给所有客户端
     */
    public void sendNotificationToAll(String notificationTitle, String content, Map<String, String> extras) {
        sendNotification(Audience.all(), notificationTitle, content, extras, PushType.Both);
    }

    /**
     * 推送给指定设备标识标签的用户
     *
     * @param tagList           设备标签集合
     * @param notificationTitle 消息内容标题
     * @param content           消息内容
     */
    public void sendNotificationByTags(List<String> tagList, String notificationTitle, String content) {
        for (String tag : tagList) {
            sendNotificationByTag(tag, notificationTitle, content);
        }
    }

    public void sendNotificationByTags(List<String> tagList, String notificationTitle, String content, Map<String, String> extras) {
        for (String tag : tagList) {
            sendNotificationByTag(tag, notificationTitle, content, extras);
        }
    }

    public void sendNotificationByTag(String tag, String notificationTitle, String content) {
        sendNotificationByTag(tag, notificationTitle, content, new HashMap<>());
    }

    public void sendNotificationByTag(String tag, String notificationTitle, String content, Map<String, String> extras) {
        sendNotification(Audience.tag(tag), notificationTitle, content, extras, PushType.Both);
    }

    public void sendNotificationByAlias(List<String> aliasList, String notificationTitle, String content) {
        for (String alias : aliasList) {
            sendNotificationByAlias(alias, notificationTitle, content);
        }
    }

    public void sendNotificationByAlias(String alias, String notificationTitle, String content) {
        sendNotificationByAlias(alias, notificationTitle, content, new HashMap<>());
    }

    public void sendNotificationByAlias(String alias, String notificationTitle, String content, Map<String, String> extras) {
        if (isEmpty(alias)) return;
        sendNotification(Audience.alias(alias), notificationTitle, content, extras, PushType.Both);
    }

    public void sendByAliasOnlyCustomize(String alias, String notificationTitle, String content, Map<String, String> extras) {
        if (isEmpty(alias)) return;
        sendNotification(Audience.alias(alias), notificationTitle, content, extras, PushType.Customize);
    }

    public void sendByAliasOnlyNotification(String alias, String notificationTitle, String content, Map<String, String> extras) {
        if (isEmpty(alias)) return;
        sendNotification(Audience.alias(alias), notificationTitle, content, extras, PushType.Notification);
    }


    private void sendNotification(Audience audience, String notificationTitle, String content, Map<String, String> extras, PushType pushType) {
        PushPayload.Builder builder = PushPayload.newBuilder()
                .setPlatform(Platform.all())
                .setAudience(audience);
        if (PushType.Both.equals(pushType) || PushType.Notification.equals(pushType)) {
            builder = builder.setNotification(Notification.newBuilder()
                    .addPlatformNotification(AndroidNotification.newBuilder()
                            .setAlert(content)
                            .setTitle(content)
                            .addExtras(extras)
                            .build())
                    .addPlatformNotification(IosNotification.newBuilder()
                            .setContentAvailable(false)
                            .setAlert(
                                    IosAlert.newBuilder().
                                            setTitleAndBody(notificationTitle, null, content)
                                            .build()
                            )
                            .incrBadge(1)
                            .setSound("sound.caf")
                            .addExtras(extras)
                            .build())
                    .build());
        }
        if (PushType.Both.equals(pushType) || PushType.Customize.equals(pushType)) {
            builder = builder.setMessage(Message.newBuilder()
                    .setMsgContent(content)
                    .setTitle(notificationTitle)
                    .addExtras(extras)
                    .build());
        }
        builder = builder.setOptions(Options.newBuilder()
                .setApnsProduction(production)
                .setSendno(1)
                .setTimeToLive(86400)
                .build());

        PushPayload pushPayload = builder.build();
        try {
            jPushClient.sendPush(pushPayload);
        } catch (APIConnectionException | APIRequestException e) {
            e.printStackTrace();
        }
    }

}
 
public enum PushType {
    Notification("通知"),
    Customize("自定义消息"),
    Both("两者");

    private String label;

    PushType(String label) {
        this.label = label;
    }

    public String getLabel() {
        return label;
    }
}

 
import com.github.tobato.fastdfs.conn.*;
import com.github.tobato.fastdfs.domain.DefaultThumbImageConfig;
import com.github.tobato.fastdfs.domain.ThumbImageConfig;
import com.github.tobato.fastdfs.service.DefaultFastFileStorageClient;
import com.github.tobato.fastdfs.service.DefaultTrackerClient;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import com.github.tobato.fastdfs.service.TrackerClient;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.*;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.env.Environment;
import org.springframework.data.domain.AuditorAware;
import org.springframework.format.support.FormattingConversionServiceFactoryBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;

import java.util.Arrays;

/**
 * 里相当于xml配置ContextLoaderListener的java配置类
 * 这里只需要注意,我们启动注解扫描的时候,过滤掉EnabaleWebMvc.class
 * <p>
 * 
 */
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true) //启用自动代理功能。
@PropertySource(value = {"classpath:configure.properties", "classpath:scheduler.properties"})
@ComponentScan(basePackages = {"com.explm"},
        excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Controller.class, ControllerAdvice.class})})
public class RootConfig implements EnvironmentAware {

    private Environment environment;

    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }

    
    @Bean
    public JpushService jpushService() {
        String appKey = environment.getProperty("jpush.owner.app.key");
        String masterSecret = environment.getProperty("jpush.owner.master.secret");
        Boolean production = Boolean.valueOf(environment.getProperty("jpush.production"));
        return new JpushService(appKey, masterSecret, production);
    }



}
 
 

使用:

 
@Autowired
private JpushService jpushService;

Map<String, String> extras = new HashMap<>();
extras.put("messageType", JPushMessageType.NewMessage.name());
String messageTitle = "您收到一条新的通知消息";

jpushService.sendNotificationByAlias(PushAlias,title, content, extras);

//根据别名推送
//jpushService.sendNotificationToAll
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值