admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/util/factory/IOSPushFactory.java
@@ -1,215 +1,215 @@
package com.yeshi.fanli.util.factory;
import java.io.UnsupportedEncodingException;
import com.yeshi.fanli.dto.push.PushTypeEnum;
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",PushTypeEnum.goodsdetail.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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", PushTypeEnum.ZNX.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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",PushTypeEnum.url.getCode());
      alert.put("url", shortUrl);
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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", PushTypeEnum.weex.getCode());
      alert.put("url", shortUrl);
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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", PushTypeEnum.baichuan.getCode());
      alert.put("url", shortUrl);
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      JSONObject json = new JSONObject();
      json.put("aps", aps);
      return filterPushContent(json);
   }
   /**
    * 福利中心推送
    * @param title
    * @param body
    * @return
    */
   public static JSONObject createWelfarePush( 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", PushTypeEnum.welfare.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      JSONObject json = new JSONObject();
      json.put("aps", aps);
      return filterPushContent(json);
   }
   /**
    * 用户签到
    * @param title
    * @param body
    * @return
    */
   public static JSONObject createUserSignInPush( 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", PushTypeEnum.signin.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      JSONObject json = new JSONObject();
      json.put("aps", aps);
      return filterPushContent(json);
   }
}
package com.yeshi.fanli.util.factory;
import java.io.UnsupportedEncodingException;
import com.yeshi.fanli.dto.push.PushTypeEnum;
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(String 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",PushTypeEnum.goodsdetail.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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", PushTypeEnum.ZNX.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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",PushTypeEnum.url.getCode());
      alert.put("url", shortUrl);
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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", PushTypeEnum.weex.getCode());
      alert.put("url", shortUrl);
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      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", PushTypeEnum.baichuan.getCode());
      alert.put("url", shortUrl);
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      JSONObject json = new JSONObject();
      json.put("aps", aps);
      return filterPushContent(json);
   }
   /**
    * 福利中心推送
    * @param title
    * @param body
    * @return
    */
   public static JSONObject createWelfarePush( 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", PushTypeEnum.welfare.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      JSONObject json = new JSONObject();
      json.put("aps", aps);
      return filterPushContent(json);
   }
   /**
    * 用户签到
    * @param title
    * @param body
    * @return
    */
   public static JSONObject createUserSignInPush( 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", PushTypeEnum.signin.getCode());
      JSONObject aps = new JSONObject();
      aps.put("alert", alert);
      //aps.put("badge", 1);
      JSONObject json = new JSONObject();
      json.put("aps", aps);
      return filterPushContent(json);
   }
}