配置厂商通道
1.小米通道
1.1 上线应用并开通消息推送 得到应用信息

1.2 将小米应用信息配置到unipush

1.3 新增小米消息通道

uniapp前端获取应用CID 和 token
plus.push.getClientInfoAsync(function(info){
if (info.clientid && info.clientid != 'null') {
console.log(info)
Storage.set("clientInfo", info)
if(Storage.getToken()){
}
}
}, function(e){
console.log('Failed');
console.log(JSON.stringify(e));
})
Java后台推送透传消息
@Component
public class GeTuiUtil {
private static RedisTemplate redisTemplate;
@Autowired
private void setRedisTemplate(RedisTemplate redisTemplate){
GeTuiUtil.redisTemplate = redisTemplate;
}
private static final String APP_ID = "AppId";
private static final String APP_KEY = "AppKey";
private static final String APP_SECRET = "APP_SECRET";
private static final String MASTER_SECRET = "MASTER_SECRET";
private static final String REDIS_TOKEN_KEY = "getui_token_" + APP_ID;
private static final String baseUrl = "https://restapi.getui.com/v2/" + APP_ID;
private static final PushApi pushApi = getPushApi();
public static PushApi getPushApi(){
GtApiConfiguration apiConfiguration = new GtApiConfiguration();
apiConfiguration.setAppId(APP_ID);
apiConfiguration.setAppKey(APP_KEY);
apiConfiguration.setMasterSecret(MASTER_SECRET);
apiConfiguration.setDomain("https://restapi.getui.com/v2/");
ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
return apiHelper.creatApi(PushApi.class);
}
public static void pushToSingleByCid(String cid, String title, String content, String payload){
PushDTO<Audience> pushDTO = new PushDTO<Audience>();
pushDTO.setRequestId(System.currentTimeMillis() + "");
Settings settings = new Settings();
pushDTO.setSettings(settings);
settings.setTtl(3600000);
PushMessage pushMessage = new PushMessage();
pushDTO.setPushMessage(pushMessage);
JSONObject transmissionJson = new JSONObject();
transmissionJson.set("title", title);
transmissionJson.set("content", content);
transmissionJson.set("payload", payload);
pushMessage.setTransmission(JSONUtil.toJsonStr(transmissionJson));
Audience audience = new Audience();
audience.addCid(cid);
pushDTO.setAudience(audience);
ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
if (apiResult.isSuccess()) {
System.err.println("推送成功");
System.out.println(apiResult.getData());
String clientStatus = getClientStatus(apiResult.getData(), cid);
if ("successed_offline".equals(clientStatus)){
PushChannel pushChannel = new PushChannel();
}
} else {
System.err.println("推送失败");
System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
}
}
public static void pushToListByCid(List<String> cid, String title, String content, String payload){
AudienceDTO audienceDTO = new AudienceDTO();
PushDTO<Audience> pushDTO = buildPushDTO(title, content, payload);
ApiResult<TaskIdDTO> createApiResult = pushApi.createMsg(pushDTO);
if (!createApiResult.isSuccess()) {
}
Audience audience = new Audience();
audience.setCid(cid);
pushDTO.setAudience(audience);
audienceDTO.setAudience(audience);
audienceDTO.setTaskid(createApiResult.getData().getTaskId());
audienceDTO.setAsync(true);
pushDTO.setRequestId(System.currentTimeMillis() + "");
Settings settings = new Settings();
pushDTO.setSettings(settings);
settings.setTtl(3600000);
ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushListByCid(audienceDTO);
if (apiResult.isSuccess()) {
System.err.println("推送成功");
} else {
System.err.println("推送失败");
System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
}
}
private static PushDTO<Audience> buildPushDTO(String title, String content, String payload) {
PushDTO<Audience> pushDTO = new PushDTO<>();
pushDTO.setRequestId(System.currentTimeMillis() + "");
pushDTO.setGroupName("wxb-group");
Strategy strategy = new Strategy();
strategy.setDef(1);
Settings settings = new Settings();
settings.setStrategy(strategy);
pushDTO.setSettings(settings);
settings.setTtl(3600000);
Alert alert = new Alert();
alert.setTitle(title);
alert.setBody(content);
Aps aps = new Aps();
aps.setContentAvailable(0);
aps.setSound("default");
aps.setAlert(alert);
IosDTO iosDTO = new IosDTO();
iosDTO.setAps(aps);
iosDTO.setType("notify");
PushChannel pushChannel = new PushChannel();
pushChannel.setIos(iosDTO);
AndroidDTO androidDTO = new AndroidDTO();
Ups ups = new Ups();
ThirdNotification notification1 = new ThirdNotification();
ups.setNotification(notification1);
notification1.setTitle(title);
notification1.setBody(content);
notification1.setClickType("intent");
notification1.setIntent("intent://io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000;component=com.xinxiaobao.xxb.gys/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=" + title + ";S.content=" + content + ";S.payload=test;end");
ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry");
ups.addOption("HW", "/message/android/notification/badge/add_num", 1);
ups.addOption("HW", "/message/android/notification/importance", "HIGH");
ups.addOption("VV","classification",1);
ups.addOption("XM","extra.channel_id","xxb_gys");
androidDTO.setUps(ups);
pushChannel.setAndroid(androidDTO);
pushDTO.setPushChannel(pushChannel);
PushMessage pushMessage = new PushMessage();
pushDTO.setPushMessage(pushMessage);
JSONObject transmissionJson = new JSONObject();
transmissionJson.set("title", title);
transmissionJson.set("content", content);
transmissionJson.set("payload", payload);
pushMessage.setTransmission(JSONUtil.toJsonStr(transmissionJson));
return pushDTO;
}
private static String getClientStatus(Map<String, Map<String, String>> resultBody, String cid){
Map<String, String> map = new HashMap<>();
Set<String> strings = resultBody.keySet();
for (String key : strings) {
map = resultBody.get(key);
}
return map.get(cid);
}
private static Map<String, String> getClientStatus(Map<String, Map<String, String>> resultBody){
Map<String, String> map = new HashMap<>();
Set<String> strings = resultBody.keySet();
for (String key : strings) {
map = resultBody.get(key);
}
return map;
}