106 lines
3.9 KiB
Plaintext
106 lines
3.9 KiB
Plaintext
|
|
package com.jysoft.unipush.push;
|
|||
|
|
|
|||
|
|
import com.jysoft.unipush.template.PushTemplate;
|
|||
|
|
import com.gexin.rp.sdk.base.IPushResult;
|
|||
|
|
import com.gexin.rp.sdk.base.impl.ListMessage;
|
|||
|
|
import com.gexin.rp.sdk.base.impl.Target;
|
|||
|
|
import com.gexin.rp.sdk.template.NotificationTemplate;
|
|||
|
|
|
|||
|
|
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 PushMessageToListDemo {
|
|||
|
|
|
|||
|
|
public static void main(String[] args) {
|
|||
|
|
String taskId = getContentId();
|
|||
|
|
pushToList(taskId);
|
|||
|
|
// String taskId = getContentIdOfGroupName("任务别名_toList");
|
|||
|
|
// stopTask(taskId);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 用于在推送时去查找对应的message
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
private static String getContentId() {
|
|||
|
|
return push.getContentId(getListMessage());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 对指定用户列表推送消息
|
|||
|
|
*
|
|||
|
|
* 场景1,对于抽奖活动的应用,需要对已知的某些用户推送中奖消息,就可以通过clientid列表方式推送消息。
|
|||
|
|
* 场景2,向新客用户发放抵用券,提升新客的转化率,就可以事先提取新客列表,将消息指定发送给这部分指定CID用户。
|
|||
|
|
* @param taskId
|
|||
|
|
*/
|
|||
|
|
private static void pushToList(String taskId) {
|
|||
|
|
// System.setProperty("gexin_pushList_needDetails", "true"); //配置返回每个用户返回用户状态,可选
|
|||
|
|
// System.setProperty("gexin_pushList_needAliasDetails", "true"); // 配置返回每个别名及其对应cid的用户状态,可选
|
|||
|
|
|
|||
|
|
// 配置推送目标
|
|||
|
|
List targets = new ArrayList();
|
|||
|
|
Target target1 = new Target();
|
|||
|
|
Target target2 = new Target();
|
|||
|
|
target1.setAppId(APPID);
|
|||
|
|
target1.setClientId(CID);
|
|||
|
|
// target1.setAlias(Alias1);
|
|||
|
|
target2.setAppId(APPID);
|
|||
|
|
target2.setClientId(CID_2);
|
|||
|
|
// target2.setAlias(Alias2);
|
|||
|
|
targets.add(target1);
|
|||
|
|
targets.add(target2);
|
|||
|
|
|
|||
|
|
IPushResult ret = null;
|
|||
|
|
try {
|
|||
|
|
ret = push.pushMessageToList(taskId, targets);
|
|||
|
|
} catch (Exception e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
if (ret != null) {
|
|||
|
|
System.out.println(ret.getResponse().toString());
|
|||
|
|
} else {
|
|||
|
|
System.out.println("服务器响应异常");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private static ListMessage getListMessage() {
|
|||
|
|
NotificationTemplate template = PushTemplate.getNotificationTemplate();
|
|||
|
|
ListMessage message = new ListMessage();
|
|||
|
|
message.setData(template);
|
|||
|
|
// 设置消息离线,并设置离线时间
|
|||
|
|
message.setOffline(true);
|
|||
|
|
// 离线有效时间,单位为毫秒,可选
|
|||
|
|
message.setOfflineExpireTime(24 * 1000 * 3600);
|
|||
|
|
message.setPushNetWorkType(1);//判断客户端是否wifi环境下推送。1为仅在wifi环境下推送,0为不限制网络环境,默认不限
|
|||
|
|
// 厂商下发策略;1: 个推通道优先,在线经个推通道下发,离线经厂商下发(默认);2: 在离线只经厂商下发;3: 在离线只经个推通道下发;4: 优先经厂商下发,失败后经个推通道下发;
|
|||
|
|
message.setStrategyJson("{\"default\":4,\"ios\":4,\"st\":4}");
|
|||
|
|
return message;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 任务组名推送, 一个应用同时下发了n个推送任务,为了更好地跟踪这n个任务的推送效果,可以把他们组成一个任务组,在查询数据时,只需要输入该任务组名即可同时查到n个任务的数据结果。
|
|||
|
|
* @param groupName
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
private static String getContentIdOfGroupName(String groupName) {
|
|||
|
|
return push.getContentId(getListMessage(), groupName);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 对正处于推送状态,或者未接收的消息停止下发
|
|||
|
|
* @param taskId
|
|||
|
|
*/
|
|||
|
|
private static void stopTask(String taskId) {
|
|||
|
|
boolean ret = push.stop(taskId);
|
|||
|
|
System.out.println(ret);
|
|||
|
|
}
|
|||
|
|
}
|