hz-zhhq-app-service/greenH5modul/.svn/pristine/d4/d462c79192f7d6b9cb51bc7b951...

145 lines
5.1 KiB
Plaintext
Raw Normal View History

2025-01-21 13:12:35 +08:00
package com.jysoft.unipush.push;
import com.jysoft.unipush.template.PushTemplate;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.IQueryResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.base.uitls.AppConditions;
import com.gexin.rp.sdk.exceptions.PushAppException;
import com.gexin.rp.sdk.template.LinkTemplate;
import java.util.ArrayList;
import java.util.List;
import static com.jysoft.unipush.constant.AppInfo.*;
/**
* 对指定应用群推消息相关demo
* @author zhangwf
* @see
* @since 2019-07-09
*/
public class PushMessageToAppDemo {
public static void main(String[] args) {
String taskId = pushMessageToApp();
// getScheduleTask(taskId);
// delScheduleTask(taskId);
// stopTask(taskId);
}
/**
* 对指定应用群推消息
*
* 场景1某app周年庆群发消息给该app的所有用户提醒用户参加周年庆活动。
* 场景2按城市接口推送
* 场景3按按照tag推送
* @return
*/
private static String pushMessageToApp() {
LinkTemplate template = PushTemplate.getLinkTemplate();
AppMessage message = new AppMessage();
message.setData(template);
message.setOffline(true);
message.setOfflineExpireTime(24 * 1000 * 3600); //离线有效时间,单位为毫秒,可选
// 厂商下发策略1: 个推通道优先,在线经个推通道下发,离线经厂商下发(默认);2: 在离线只经厂商下发;3: 在离线只经个推通道下发;4: 优先经厂商下发,失败后经个推通道下发;
message.setStrategyJson("{\"default\":4,\"ios\":4,\"st\":4}");
//全量推送时希望能控制推送速度不要太快,缓减服务器连接压力,可设置定速推送。如果未设置则按默认推送速度发送
// message.setSpeed(100); // 设置为100含义为个推控制下发速度在100条/秒左右
//设置推送时间,需要申请开通套餐
// try {
// message.setPushTime("201907121810"); //2019年07月12日18:10分开始推送限制条件参见官网http://docs.getui.com/getui/server/java/push/)定时推送有关说明
// } catch (ParseException e) {
// e.printStackTrace();
// }
List<String> appIdList = new ArrayList<String>();
appIdList.add(APPID);
message.setAppIdList(appIdList);
//推送给App的目标用户需要满足的条件
AppConditions cdt = new AppConditions();
//手机类型
List<String> phoneTypeList = new ArrayList<String>();
phoneTypeList.add("IOS");
phoneTypeList.add("ANDROID");
//地区
List<String> regionList = new ArrayList<String>();
//参见 datafile目录下 region_code.data
regionList.add("33010000");//杭州市
regionList.add("51010000");//成都市
//自定义tag
List<String> tagList = new ArrayList<String>();
tagList.add(TAG);
tagList.add(TAG_2);
//查询可推送的用户画像需要开通VIP套餐)
IQueryResult personaTagResult = push.getPersonaTags(APPID);
System.out.println(personaTagResult.getResponse());
//工作
List<String> jobs = new ArrayList<String>();
jobs.add("0102");
jobs.add("0110");
//年龄
List<String> age = new ArrayList<String>();
age.add("0000");
//条件交并补功能, 默认是与
cdt.addCondition(AppConditions.PHONE_TYPE, phoneTypeList, AppConditions.OptType.or);
cdt.addCondition(AppConditions.REGION, regionList, AppConditions.OptType.or);
cdt.addCondition(AppConditions.TAG, tagList, AppConditions.OptType.not);
cdt.addCondition("job", jobs);
cdt.addCondition("age", age);
message.setConditions(cdt);
IPushResult ret = null;
try {
ret = push.pushMessageToApp(message);
// ret = push.pushMessageToApp(message, "任务别名_toApp");
} catch (PushAppException e) {
e.printStackTrace();
}
if (ret != null) {
System.out.println(ret.getResponse().toString());
return ret.getResponse().get("contentId").toString();
} else {
System.out.println("服务器响应异常");
return null;
}
}
/**
* 定时任务查询接口
* @param taskId
*/
private static void getScheduleTask(String taskId) {
IPushResult ret = push.getScheduleTask(taskId, APPID);
System.out.println(ret.getResponse().toString());
}
/**
* 定时任务删除接口
* @param taskId
*/
private static void delScheduleTask(String taskId) {
IPushResult ret = push.delScheduleTask(taskId, APPID);
System.out.println(ret.getResponse().toString());
}
/**
* 对正处于推送状态,或者未接收的消息停止下发
* @param taskId
*/
private static void stopTask(String taskId) {
boolean ret = push.stop(taskId);
System.out.println(ret);
}
}