java使用别名发送极光推送

pom引用

		<!--极光推送-->
        <dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jpush-client</artifactId>
            <version>3.4.2</version>
        </dependency>
        <!--极光推送-->

工具类

package com.sxapp.message.utils;

import cn.jiguang.common.ClientConfig;
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.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;
import com.alibaba.fastjson.JSON;
import com.sxapp.message.dto.JPushContent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Dirk
 * @Date 2019-10-28 10:31
 */
@Component
public class JPushClientUtil {

    private static final Logger log = LoggerFactory.getLogger(JPushClientUtil.class);

    @Value("${push.jg.app.key}")
    private String appKey;

    @Value("${push.jg.master.secret}")
    private String masterSecret;

    public void sendPushToAlias(List<String> alias, JPushContent jPushContent, String title) {
        ClientConfig clientConfig = ClientConfig.getInstance();
        JPushClient jPushClient = new JPushClient(masterSecret, appKey, null, clientConfig);
        try {
            PushResult pushResult = jPushClient.sendPush(PushPayload.newBuilder()
                    // 指定要推送的平台
                    .setPlatform(Platform.android_ios())
                    // 指定推送的接收对象
                    .setAudience(Audience.alias(alias))
                    //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
                    .setNotification(
                            Notification.newBuilder()
                                    .addPlatformNotification(
                                            AndroidNotification.newBuilder()
                                                    .setAlert(title)
                                                    //此字段为透传字段,不会显示在通知栏。
                                                    .addExtra("extra", JSON.toJSONString(jPushContent))
                                                    .build()
                                    )
                                    .addPlatformNotification(
                                            IosNotification.newBuilder()
                                                    .setAlert(title)
                                                    .setSound("default")
                                                    .addExtra("extra", JSON.toJSONString(jPushContent))
                                                    .build()
                                    )
                                    .build()
                    )
                    .build());
            log.info("push result is [{}]", pushResult.toString());
        } catch (APIConnectionException | APIRequestException e) {
            log.error("push fail! [{}]", e.getMessage());
            e.printStackTrace();
        }
    }
}

异步线程处理

package com.sxapp.message.handler;

import com.sxapp.message.dto.JPushRequest;
import com.sxapp.message.utils.JPushClientUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

/**
 * @author Dirk
 * @Date 2019-12-13 13:56
 */
public class JPushHandler implements Runnable {

    private static final Logger log = LoggerFactory.getLogger(JPushHandler.class);

    private JPushClientUtil jPushClientUtil;

    private JPushRequest jPushRequest;

    public JPushHandler(JPushClientUtil jPushClientUtil, JPushRequest jPushRequest) {
        this.jPushClientUtil = jPushClientUtil;
        this.jPushRequest = jPushRequest;
    }

    @Override
    public void run() {
        List<String> alias = jPushRequest.getAlias();
        int group = alias.size() / 1000;
        for (int i = 0; i <= group; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            jPushClientUtil.sendPushToAlias(alias.subList(1000 * i, Math.min(1000 * (i + 1), alias.size())),
                    jPushRequest.getjPushContent(), jPushRequest.getTitle());
        }
    }
}

调用

	@Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private JPushClientUtil jPushClientUtil;

	public void jPushMessage(JPushRequest jPushRequest) {
        threadPoolTaskExecutor.execute(new JPushHandler(jPushClientUtil, jPushRequest));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值