一、个推推送消息到app
1、引入依赖:
<!--个推依赖-->
<dependency>
<groupId>com.getui.push</groupId>
<artifactId>restful-sdk</artifactId>
<version>1.0.0.15</version>
</dependency>
2、后台代码:
package com.wxgc.base.getui.util;
import com.alibaba.fastjson.JSON;
import com.getui.push.v2.sdk.ApiHelper;
import com.getui.push.v2.sdk.GtApiConfiguration;
import com.getui.push.v2.sdk.api.PushApi;
import com.getui.push.v2.sdk.common.ApiResult;
import com.getui.push.v2.sdk.dto.req.Audience;
import com.getui.push.v2.sdk.dto.req.AudienceDTO;
import com.getui.push.v2.sdk.dto.req.Settings;
import com.getui.push.v2.sdk.dto.req.message.PushChannel;
import com.getui.push.v2.sdk.dto.req.message.PushDTO;
import com.getui.push.v2.sdk.dto.req.message.PushMessage;
import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO;
import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import com.getui.push.v2.sdk.dto.req.message.android.ThirdNotification;
import com.getui.push.v2.sdk.dto.req.message.android.Ups;
import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
import com.getui.push.v2.sdk.dto.res.TaskIdDTO;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
public class AppNoticeUtils {
//单推
public static boolean pushToSingleByCid(GtApiConfiguration configuration, String cid, String title, String content, String payload) {
ApiHelper apiHelper = ApiHelper.build(configuration);
PushApi pushApi = apiHelper.creatApi(PushApi.class);
//推送消息体
PushDTO<Audience> pushDTO = buildPushDTO(title, content, payload);
//设置接收人信息
Audience audience = new Audience();
pushDTO.setAudience(audience);
audience.addCid(cid);// cid
//进行cid单推
ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
if (apiResult.isSuccess()) {
log.info("Push succeeded. cid:" + cid + ",msg:" + apiResult.getMsg() + ",data:" + apiResult.getData());
return true;
} else {
log.info("Push failed. cid:" + cid + ",code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
return false;
}
}
//批量推
public static boolean pushListByCid(GtApiConfiguration configuration, List<String> cidList, String title, String content, String payload) {
ApiHelper apiHelper = ApiHelper.build(configuration);
PushApi pushApi = apiHelper.creatApi(PushApi.class);
//批量发送
AudienceDTO audienceDTO = new AudienceDTO();
PushDTO<Audience> pushDTO = buildPushDTO(title, content, payload);
//创建消息
ApiResult<TaskIdDTO> createApiResult = pushApi.createMsg(pushDTO);
if (!createApiResult.isSuccess()) {
log.info("批量推送:创建消息失败" + createApiResult.getMsg());
log.error("批量推送:创建消息失败" + createApiResult.getMsg());
return false;
}
// 设置接收人信息
Audience audience = new Audience();
pushDTO.setAudience(audience);
audience.setCid(cidList);
audienceDTO.setAudience(audience);
audienceDTO.setTaskid(createApiResult.getData().getTaskId());
audienceDTO.setAsync(true);
ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushListByCid(audienceDTO);
if (apiResult.isSuccess()) {
log.info("Batch push succeeded. msg:" + apiResult.getMsg() + ",data:" + apiResult.getData());
log.error("Batch push succeeded. msg:" + apiResult.getMsg() + ",data:" + apiResult.getData());
return true;
} else {
log.info("Batch push failed. code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
log.error("Batch push failed. code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
return false;
}
}
//组装请求数据
public static PushDTO<Audience> buildPushDTO(String tile, String content, String payload) {
PushDTO<Audience> pushDTO = new PushDTO<>();
// 设置推送参数
pushDTO.setRequestId(System.currentTimeMillis() + "");
//配置推送条件
Settings settings = new Settings();
pushDTO.setSettings(settings);
//消息有效期,走厂商消息需要设置该值
settings.setTtl(3600000);
//安卓在线通道走个推推送时的消息体(在线通道不支持ios)
PushMessage pushMessage = new PushMessage();
pushDTO.setPushMessage(pushMessage);
//通知消息
GTNotification notification = new GTNotification();
pushMessage.setNotification(notification);
notification.setTitle(tile);//个推消息标题长度限制≤ 50字
notification.setBody(content);//个推消息内容长度限制≤ 256字
notification.setPayload(payload);
notification.setClickType("payload");//之前打开应用首页,打开网页地址,打开应用内特定页面,当前设置纯通知,后续有需求可自定义选择
//设置离线推送时的消息体
PushChannel pushChannel = new PushChannel();
//安卓离线厂商通道推送的消息体
AndroidDTO androidDTO = new AndroidDTO();
Ups ups = new Ups();
//通知消息
ThirdNotification thirdNotification = new ThirdNotification();
ups.setNotification(thirdNotification);
thirdNotification.setTitle(tile);//安卓厂商标题长度限制不统一,取最小值20汉字
thirdNotification.setBody(content);//最小值50汉字
thirdNotification.setPayload(payload);
thirdNotification.setClickType("payload");
androidDTO.setUps(ups);
pushChannel.setAndroid(androidDTO);
//ios离线apn通道推送的消息体
Alert alert = new Alert();
alert.setTitle(tile);
alert.setBody(content);
Aps aps = new Aps();
aps.setContentAvailable(0);//0表示普通通知消息(默认为0);1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。苹果建议1小时最多推送3条静默消息
aps.setSound("default");//自定义铃声:系统铃声设置为:default; 无声设置为:com.gexin.ios.silence,或不填
aps.setAlert(alert);
IosDTO iosDTO = new IosDTO();
iosDTO.setAps(aps);
iosDTO.setType("notify");//消息类型voip:voip语音推送,notify:apns通知消息
pushChannel.setIos(iosDTO);
pushDTO.setPushChannel(pushChannel);
return pushDTO;
}
//测试
public static void main(String[] args) {
GtApiConfiguration gtApiConfiguration = new GtApiConfiguration();
gtApiConfiguration.setAppId("XkCqfelJnR9FpCEIUUez35");
gtApiConfiguration.setAppKey("8weznWhQHT9HKFDawZqha8");
gtApiConfiguration.setMasterSecret("Pps2Wt7V0aA9V7Npo6nTT3");
gtApiConfiguration.setDomain("https://restapi.getui.com/v2/");
List<String> cidList = new ArrayList<>();
cidList.add("4416d7064d27e38d31d6dc27fc09182e");
// String coontent = "{\n" +
// " \"id\": \"2b13f7d8d7eaef037a8978adbe29ab86\",\n" +
// " }";
String coontent = "{\"id\":\"2b13f7d8d7eaef037a8978adbe29ab86\"}";
pushListByCid(gtApiConfiguration, cidList,"报警消息","有一条水稳拌合站数据预警",coontent);
}
}