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);
|
||
}
|
||
}
|