All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ars.module.mobile.app.baidu.IOSBaiduMessager Maven / Gradle / Ivy

package ars.module.mobile.app.baidu;

import java.util.Map;
import java.util.HashMap;
import java.util.Map.Entry;

import com.baidu.yun.push.model.PushRequest;
import com.baidu.yun.push.model.PushMsgToAllRequest;
import com.baidu.yun.push.model.PushBatchUniMsgRequest;
import com.baidu.yun.push.model.PushMsgToSingleDeviceRequest;

import ars.util.Jsons;
import ars.module.mobile.app.baidu.AbstractBaiduMessager;

/**
 * 基于百度云推送的苹果App消息推送实现
 * 
 * @author yongqiangwu
 * 
 */
public class IOSBaiduMessager extends AbstractBaiduMessager {
	protected final boolean develop; // 是否为开发状态

	public IOSBaiduMessager(String app, String token) {
		this(app, token, false);
	}

	public IOSBaiduMessager(String app, String token, boolean develop) {
		super(app, token);
		this.develop = develop;
	}

	public IOSBaiduMessager(String url, String app, String token) {
		this(url, app, token, false);
	}

	public IOSBaiduMessager(String url, String app, String token, boolean develop) {
		super(url, app, token);
		this.develop = develop;
	}

	@Override
	public PushRequest getPushRequest(String message, Map parameters, String... channels) {
		Map context = new HashMap();
		Map aps = new HashMap();
		aps.put("alert", message);
		context.put("aps", aps);
		for (Entry entry : parameters.entrySet()) {
			String key = entry.getKey();
			if (context.containsKey(key)) {
				throw new IllegalArgumentException("Parameter key is already exists:" + key);
			}
			context.put(key, entry.getValue());
		}
		String messageBody = Jsons.format(context);
		if (channels.length == 0) { // 全部推送
			return new PushMsgToAllRequest().addMessageType(1).addDepolyStatus(this.develop ? 1 : 2).addDeviceType(4)
					.addMessage(messageBody);
		} else if (channels.length == 1) { // 定点推送
			return new PushMsgToSingleDeviceRequest().addMessageType(1).addDeployStatus(this.develop ? 1 : 2)
					.addDeviceType(4).addChannelId(channels[0]).addMessage(messageBody);
		}
		// 批量推送
		return new PushBatchUniMsgRequest().addMessageType(1).addDeviceType(4).addChannelIds(channels)
				.addMessage(messageBody);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy