package push;
import java.util.Arrays;
import java.util.HashSet;
import org.json.JSONObject;
public abstract class UmengNotification {
// This JSONObject is used for constructing the whole request string.
protected final JSONObject rootJson = new JSONObject();
// The app master secret
protected String appMasterSecret;
// Keys can be set in the root level
protected static final HashSet<String> ROOT_KEYS = new HashSet<String>(
Arrays.asList(new String[] { "appkey", "timestamp", "type", "device_tokens", "alias", "alias_type",
"file_id", "filter", "production_mode", "feedback", "description", "thirdparty_id" }));
// Keys can be set in the policy level
protected static final HashSet<String> POLICY_KEYS = new HashSet<String>(
Arrays.asList(new String[] { "start_time", "expire_time", "max_send_num" }));
// Set predefined keys in the rootJson, for extra keys(Android) or
// customized keys(IOS) please
// refer to corresponding methods in the subclass.
public abstract boolean setPredefinedKeyValue(String key, Object value) throws Exception;
public void setAppMasterSecret(String secret) {
appMasterSecret = secret;
}
public String getPostBody() {
return rootJson.toString();
}
public final String getAppMasterSecret() {
return appMasterSecret;
}
protected void setProductionMode(Boolean prod) throws Exception {
setPredefinedKeyValue("production_mode", prod.toString());
}
/// 正式模式
public void setProductionMode() throws Exception {
setProductionMode(true);
}
/// 测试模式
public void setTestMode() throws Exception {
setProductionMode(false);
}
/// 发送消息描述,建议填写。
public void setDescription(String description) throws Exception {
setPredefinedKeyValue("description", description);
}
/// 定时发送时间,若不填写表示立即发送。格式: "YYYY-MM-DD hh:mm:ss"。
public void setStartTime(String startTime) throws Exception {
setPredefinedKeyValue("start_time", startTime);
}
/// 消息过期时间,格式: "YYYY-MM-DD hh:mm:ss"。
public void setExpireTime(String expireTime) throws Exception {
setPredefinedKeyValue("expire_time", expireTime);
}
/// 发送限速,每秒发送的最大条数。
public void setMaxSendNum(Integer num) throws Exception {
setPredefinedKeyValue("max_send_num", num);
}
}