package com.yeshi.fanli.util.factory;
|
|
import java.io.UnsupportedEncodingException;
|
|
import com.yeshi.fanli.controller.admin.PushController;
|
import com.yeshi.fanli.util.StringUtil;
|
|
import net.sf.json.JSONObject;
|
|
public class IOSPushFactory {
|
|
private static JSONObject filterPushContent(JSONObject json) {
|
if (json != null)
|
try {
|
boolean ischange = false;
|
while (json.toString().getBytes("UTF-8").length > 253) {
|
// 首先削减内容,然后削减标题
|
String title = json.optJSONObject("aps").optJSONObject("alert").optString("title");
|
String body = json.optJSONObject("aps").optJSONObject("alert").optString("body");
|
if (StringUtil.isNullOrEmpty(body) || body.length() < 4) {
|
// 削减标题
|
if (!StringUtil.isNullOrEmpty(title) && title.length() > 6) {
|
json.optJSONObject("aps").optJSONObject("alert").put("title",
|
title.substring(0, title.length() - 1));
|
continue;
|
}
|
} else {
|
ischange = true;
|
json.optJSONObject("aps").optJSONObject("alert").put("body",
|
body.substring(0, body.length() - 1));
|
continue;
|
}
|
}
|
|
if (ischange) {
|
String body = json.optJSONObject("aps").optJSONObject("alert").optString("body");
|
json.optJSONObject("aps").optJSONObject("alert").put("body", body + "...");
|
}
|
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
return json;
|
}
|
|
/**
|
* IOS商品推送 返回JSON的字符串长度小于等于256
|
*
|
* @param auctionId
|
* 淘宝商品ID
|
* @param title
|
* @param body
|
* @return
|
*/
|
public static JSONObject createGoodsPush(Long auctionId, String title, String body) {
|
JSONObject alert = new JSONObject();
|
alert.put("title", title);
|
alert.put("body", body);
|
alert.put("badge", "1");
|
alert.put("sound", "default");
|
alert.put("url", "http://id=" + auctionId);
|
alert.put("type", PushController.GOODS);
|
|
JSONObject aps = new JSONObject();
|
aps.put("alert", alert);
|
JSONObject json = new JSONObject();
|
json.put("aps", aps);
|
return filterPushContent(json);
|
}
|
|
/**
|
* IOS站内信推送 返回JSON的字符串长度小于等于256
|
*
|
* @param title
|
* @param body
|
* @return
|
*/
|
public static JSONObject createZNXPush(String title, String body) {
|
JSONObject alert = new JSONObject();
|
alert.put("title", title);
|
alert.put("body", body);
|
alert.put("badge", "1");
|
alert.put("sound", "default");
|
alert.put("type", PushController.ZNX);
|
JSONObject aps = new JSONObject();
|
aps.put("alert", alert);
|
JSONObject json = new JSONObject();
|
json.put("aps", aps);
|
return filterPushContent(json);
|
}
|
|
/**
|
* IOS链接推送 返回JSON的字符串长度小于等于256
|
*
|
* @param shortUrl
|
* 短链
|
* @param title
|
* @param body
|
* @return
|
*/
|
public static JSONObject createURLPush(String shortUrl, String title, String body) {
|
JSONObject alert = new JSONObject();
|
alert.put("title", title);
|
alert.put("body", body);
|
alert.put("badge", "1");
|
alert.put("sound", "default");
|
alert.put("type", PushController.URL);
|
alert.put("url", shortUrl);
|
|
JSONObject aps = new JSONObject();
|
aps.put("alert", alert);
|
JSONObject json = new JSONObject();
|
json.put("aps", aps);
|
return filterPushContent(json);
|
}
|
|
/**
|
* WEEX页面推送
|
*
|
* @param shortUrl
|
* @param title
|
* @param body
|
* @return
|
*/
|
public static JSONObject createWEEXPush(String shortUrl, String title, String body) {
|
JSONObject alert = new JSONObject();
|
alert.put("title", title);
|
alert.put("body", body);
|
alert.put("badge", "1");
|
alert.put("sound", "default");
|
alert.put("type", PushController.WEEX);
|
alert.put("url", shortUrl);
|
|
JSONObject aps = new JSONObject();
|
aps.put("alert", alert);
|
JSONObject json = new JSONObject();
|
json.put("aps", aps);
|
return filterPushContent(json);
|
}
|
|
/**
|
* 百川网页推送
|
*
|
* @param shortUrl
|
* @param title
|
* @param body
|
* @return
|
*/
|
public static JSONObject createBaiChuanPush(String shortUrl, String title, String body) {
|
JSONObject alert = new JSONObject();
|
alert.put("title", title);
|
alert.put("body", body);
|
alert.put("badge", "1");
|
alert.put("sound", "default");
|
alert.put("type", PushController.BAICHUAN);
|
alert.put("url", shortUrl);
|
|
JSONObject aps = new JSONObject();
|
aps.put("alert", alert);
|
JSONObject json = new JSONObject();
|
json.put("aps", aps);
|
return filterPushContent(json);
|
}
|
|
}
|