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

com.foxinmy.umeng4j.payload.AndroidPayload Maven / Gradle / Ivy

There is a newer version: 1.1.3
Show newest version
package com.foxinmy.umeng4j.payload;

import com.alibaba.fastjson.JSONObject;
import com.foxinmy.umeng4j.type.PayloadType;

/**
 * 安卓消息提醒
 * @className AndroidPayload
 * @author jy
 * @date 2015年1月30日
 * @since JDK 1.7
 * @see
 */
public class AndroidPayload implements Payload{

	private JSONObject payloadContent;
	private JSONObject payloadBody;
	private JSONObject payloadExtar;

	/**
	 * MESSAGE 类型
	 * 
	 * @param custom
	 *            用户自定义内容
	 * @return
	 */
	public AndroidPayload(JSONObject custom) {
		payloadContent = new JSONObject();
		payloadBody = new JSONObject();
		payloadExtar = new JSONObject();
		payloadContent.put("display_type", PayloadType.MESSAGE.name()
				.toLowerCase());
		payloadBody.put("custom", custom);
	}

	/**
	 * NOTIFICATION 类型
	 * 
	 * @param ticker
	 *            通知栏提示文字
	 * @param title
	 *            通知标题
	 * @param text
	 *            通知文字描述
	 */
	public AndroidPayload(String ticker, String title, String text) {
		payloadContent = new JSONObject();
		payloadBody = new JSONObject();
		payloadExtar = new JSONObject();
		payloadContent.put("display_type", PayloadType.NOTIFICATION.name()
				.toLowerCase());
		payloadBody.put("ticker", ticker);
		payloadBody.put("title", title);
		payloadBody.put("text", text);
	}

	/**
	 * 可选 状态栏图标ID, R.drawable.[smallIcon], 如果没有, 默认使用应用图标。
	 * 图片要求为24*24dp的图标,或24*24px放在drawable-mdpi下。 注意四周各留1个dp的空白像素
	 * 
	 * @param icon
	 * @return
	 */
	public AndroidPayload icon(String icon) {
		payloadBody.put("icon", icon);
		return this;
	}

	/**
	 * 可选 通知栏拉开后左侧图标ID, R.drawable.[largeIcon]. 图片要求为64*64dp的图标,
	 * 可设计一张64*64px放在drawable-mdpi下, 注意图片四周留空,不至于显示太拥挤
	 * 
	 * @param largeIcon
	 * @return
	 */
	public AndroidPayload largeIcon(String largeIcon) {
		payloadBody.put("largeIcon", largeIcon);
		return this;
	}

	/**
	 * 可选 通知栏大图标的URL链接。该字段的优先级大于largeIcon。 该字段要求以http或者https开头
	 * 
	 * @param image
	 * @return
	 */
	public AndroidPayload image(String image) {
		payloadBody.put("img", image);
		return this;
	}

	/**
	 * 可选 通知声音,R.raw.[sound]. 如果该字段为空,采用SDK默认的声音, 即res/raw/下的
	 * umeng_push_notification_default_sound声音文件 如果SDK默认声音文件不存在,
	 * 则使用系统默认的Notification提示音
	 * 
	 * @param sound
	 * @return
	 */
	public AndroidPayload sound(String sound) {
		payloadBody.put("sound", sound);
		return this;
	}

	/**
	 * 自定义通知样式 可选 默认为0,用于标识该通知采用的样式。使用该参数时, 开发者必须在SDK里面实现自定义通知栏样式
	 * 
	 * @param themeId
	 * @return
	 */
	public AndroidPayload theme(String themeId) {
		payloadBody.put("builder_id", themeId);
		return this;
	}

	/**
	 * 通知到达设备后的提醒方式 可选 收到通知是否震动,默认为"true".
	 * 
	 * @param vibrate
	 * @return
	 */
	public AndroidPayload playVibrate(boolean vibrate) {
		payloadBody.put("play_vibrate", Boolean.toString(vibrate));
		return this;
	}

	/**
	 * 可选 收到通知是否闪灯,默认为"true"
	 * 
	 * @param light
	 * @return
	 */
	public AndroidPayload playLight(boolean light) {
		payloadBody.put("play_lights", Boolean.toString(light));
		return this;
	}

	/**
	 * 可选 收到通知是否发出声音,默认为"true"
	 * 
	 * @param sound
	 * @return
	 */
	public AndroidPayload playSound(boolean sound) {
		payloadBody.put("play_sound", Boolean.toString(sound));
		return this;
	}

	/**
	 * 点击"通知"的后续行为,打开app。
	 * 
	 * @return
	 */
	public AndroidPayload afterOpenApp() {
		payloadBody.put("after_open", "go_app");
		return this;
	}

	/**
	 * 点击"通知"的后续行为,打开自定义。
	 * 
	 * @return
	 */
	public AndroidPayload afterOpenCustom() {
		payloadBody.put("after_open", "go_custom");
		return this;
	}

	/**
	 * 点击"通知"的后续行为,跳转到URL。
	 * 
	 * @param url
	 * @return
	 */
	public AndroidPayload afterOpenUrl(String url) {
		payloadBody.put("after_open", "go_url");
		payloadBody.put("url", url);
		return this;
	}

	/**
	 * 点击"通知"的后续行为,跳转到URL。
	 * 
	 * @param url
	 * @return
	 */
	public AndroidPayload afterOpenActivity(String activity) {
		payloadBody.put("after_open", "go_activity");
		payloadBody.put("activity", activity);
		return this;
	}

	/**
	 * 可选 用户自定义key-value。只对"通知" (display_type=notification)生效。
	 * 可以配合通知到达后,打开App,打开URL,打开Activity使用。
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public AndroidPayload extar(String key, String value) {
		payloadExtar.put(key, value);
		return this;
	}

	/**
	 * payload 内容
	 * 
	 * @return
	 */
	public JSONObject asContent() {
		if (!payloadBody.containsKey("play_vibrate")) {
			playVibrate(true);
		}
		if (!payloadBody.containsKey("play_lights")) {
			playLight(true);
		}
		if (!payloadBody.containsKey("play_sound")) {
			playSound(true);
		}
		if (!payloadBody.containsKey("after_open")) {
			afterOpenApp();
		}
		payloadContent.put("body", payloadBody);
		payloadContent.put("extar", payloadExtar);
		return payloadContent;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy