mitao
2025-02-21 31573d6180d15ef65ed0df9c2732495f40b12663
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package com.panzhihua.service_property.util;
 
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;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
 
import java.util.Map;
 
/**
 * @ClassName JPushUtil
 * @Description:
 * @Author gzm
 * @Date 2020/6/12 10:14
 **/
@Slf4j
public class JPushUtil {
 
    /** 设置好账号的app_key和masterSecret是必须的
     用自己创建以用后的APP_KEY和MASTER_SECRET
     替换即可,后期可写到yml配置文件中*/
    @Value("{JPush.APP_KEY}")
    private static String APP_KEY = "6db03724d207e0debcca68af";
    private static String MASTER_SECRET = "8ba46c3e30e1fd2cea0b246e";
 
    // 极光推送>>Android
    //Map<String, String> parm是我自己传过来的参数,可以自定义参数
 
    public static void jpushAndroid(Map<String, String> parm) {
 
        // 创建JPushClient(极光推送的实例)
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        // 推送的关键,构造一个payload
        PushPayload payload = PushPayload.newBuilder()
                // 指定android平台的用户
                .setPlatform(Platform.android())
                // 同社区账号推送
                .setAudience(Audience.tag(parm.get("communityId")))
 
//                .setAudience(Audience.alias(parm.get("alias"))) // 设置别名发送,单发,点对点方式
                //.setAudience(Audience.tag("tag1")) // 设置按标签发送,相当于群发
//                .setAudience(Audience.registrationId(parm.get("id"))) // registrationId指定用户
                // 发送内容
                .setNotification(Notification.android(parm.get("msg"),
                        parm.get("title"), parm))
                // apnProduction指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式) 不用设置也没关系
                // TimeToLive 两个小时的缓存时间
                .setOptions(Options.newBuilder().setApnsProduction(true).setTimeToLive(7200).build())
                // 自定义信息
                .setMessage(Message.content(parm.get("alarm")))
                .build();
        try {
            PushResult pu = jpushClient.sendPush(payload);
 
            System.out.println(pu.toString());
 
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }
 
    // 极光推送>>ios
 
    // Map<String, String> parm是我自己传过来的参数,可以自定义参数
 
    public static  void jpushIOS(Map<String, String> parm) {
        // 创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        PushPayload payload = PushPayload.newBuilder()
                // ios平台的用户
                .setPlatform(Platform.ios())
                // 所有用户
                .setAudience(Audience.all())
                // registrationId指定用户
                //.setAudience(Audience.registrationId(parm.get("id")))
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder()
                                .setAlert(parm.get("msg"))
                                .setBadge(+1)
                                // 这里是设置提示音
                                .setSound("happy")
                                .addExtras(parm)
                                .build())
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                // 自定义信息
                .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())
                .build();
        try {
            PushResult pu = jpushClient.sendPush(payload);
            log.info(String.valueOf(pu));
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }
 
 
    // 极光推送>>All所有平台
 
    public static void jpushAll(Map<String, String> param) {
 
        // 创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        // 创建option
        PushPayload payload = PushPayload.newBuilder()
                // 所有平台的用户
                .setPlatform(Platform.all())
                // registrationId指定用户
                .setAudience(Audience.registrationId(param.get("id")))
 
                .setNotification(Notification.newBuilder()
                        // 发送ios
                        .addPlatformNotification(IosNotification.newBuilder()
                                // 消息体
                                .setAlert(param.get("msg"))
                                .setBadge(+1)
                                // ios提示音
                                .setSound("happy")
                                // 附加参数
                                .addExtras(param)
                                .build())
                        // 发送android
                        .addPlatformNotification(AndroidNotification.newBuilder()
                                // 附加参数
                                .addExtras(param)
                                // 消息体
                                .setAlert(param.get("msg"))
                                .build())
                        .build())
                // 指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式)
                .setOptions(Options.newBuilder().setApnsProduction(true).build())
                // 自定义信息
                .setMessage(Message.newBuilder().setMsgContent(param.get("msg")).addExtras(param).build())
                .build();
        try {
            PushResult pu = jpushClient.sendPush(payload);
            log.info(String.valueOf(pu));
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }
}