/** 发送jpush到客户端 */
  @Override
  public boolean sendByRegisitrationID(
      String msg, Map<String, String> extras, Integer imsi, String... regisitrationIDs) {

    String extrasJson = new Gson().toJson(extras);
    // extrasJson = extrasJson.replaceAll("\"", "'");
    PushPayload payload = null;
    if (imsi == IMSI_ANDROID) {
      payload =
          PushPayload.newBuilder()
              .setPlatform(Platform.all())
              .setAudience(Audience.registrationId(regisitrationIDs))
              .setMessage(
                  Message.newBuilder().setMsgContent(msg).addExtra("data", extrasJson).build())
              .build();
    }
    //		else if(imsi==IMSI_IOS){
    //			 payload = PushPayload.newBuilder()
    //					.setPlatform(Platform.all())
    //					.setAudience(Audience.registrationId(regisitrationIDs))
    //					.setNotification(Notification.ios(msg, extras)) //alert(msg)
    //					.build();
    //		}
    else { // 默认按iphone处理
      payload =
          PushPayload.newBuilder()
              .setPlatform(Platform.all())
              .setAudience(Audience.registrationId(regisitrationIDs))
              .setNotification(Notification.ios(msg, extras)) // alert(msg)
              .build();
    }

    //		PushPayload payload = PushPayload
    //				.newBuilder()
    //				.setPlatform(Platform.all())
    //				.setAudience(Audience.registrationId(regisitrationIDs))
    //				.setMessage(
    //						Message.newBuilder().setMsgContent(msg)
    //								.addExtra("data",  extrasJson).build()).build();

    //
    //		PushPayload payload = PushPayload.newBuilder()
    //				.setPlatform(Platform.all())
    //				.setAudience(Audience.registrationId(regisitrationIDs))
    //				.setNotification(Notification.ios(msg, extras)) //alert(msg)
    //				.setMessage(
    //						Message.newBuilder().setMsgContent(msg)
    //								.addExtra("data",  extrasJson).build())
    //				.build();
    try {
      PushResult result = jpushClient.sendPush(payload);
      return result.isResultOK();
    } catch (Exception e1) {
      errorLogger.writeErrorLog(e1.getMessage());
      appLogger.error(e1.getMessage(), e1);
      debugLogger.error(e1.getMessage(), e1);
      return false;
    }
  }
Example #2
0
 private static PushPayload buildPushObject_android_tag_alertWithTitle(String alert) {
   return PushPayload.newBuilder()
       .setPlatform(Platform.android())
       .setAudience(Audience.tag("profit4all"))
       .setNotification(Notification.android(alert, TITLE, null))
       .build();
 }
 /**
  * 构建推送对象:所有平台,推送目标是别名为 "alias1",通知内容为 ALERT。
  *
  * @return
  */
 private static PushPayload buildPushObject_all_alias_alert(String title, String message) {
   return PushPayload.newBuilder()
       .setPlatform(Platform.all())
       .setAudience(Audience.alias(title))
       .setNotification(Notification.alert(message))
       .build();
 }
 /** The shortcut of building a simple message object to all platforms and all audiences */
 public static PushPayload messageAll(String msgContent) {
   return new Builder()
       .setPlatform(Platform.all())
       .setAudience(Audience.all())
       .setMessage(Message.content(msgContent))
       .build();
 }
 /**
  * The shortcut of building a simple alert notification object to all platforms and all audiences
  */
 public static PushPayload alertAll(String alert) {
   return new Builder()
       .setPlatform(Platform.all())
       .setAudience(Audience.all())
       .setNotification(Notification.alert(alert))
       .build();
 }
 /**
  * 构建推送对象:平台是 Android,目标是 tag 为 "tag1" 的设备,内容是 Android 通知 ALERT,并且标题为 TITLE。
  *
  * @return
  */
 private static PushPayload buildPushObject_android_tag_alertWithTitle(
     String target, String title, String message) {
   return PushPayload.newBuilder()
       .setPlatform(Platform.android())
       .setAudience(Audience.tag(target))
       .setNotification(Notification.android(title, message, null))
       .build();
 }
  public PushPayload buildAndroidPayload(String msg, String devId, Map<String, String> extra) {
    Message.Builder msgBuilder = Message.newBuilder().setMsgContent(msg);
    if (extra != null) msgBuilder.addExtras(extra);

    return PushPayload.newBuilder()
        .setPlatform(Platform.android())
        .setAudience(Audience.registrationId(devId))
        // .setNotification(Notification.android(msg, msg, extra))
        .setMessage(msgBuilder.build())
        .build();
  }
 /**
  * 构建推送对象:平台是 Andorid 与 iOS,推送目标是 ("tag1" 与 "tag2" 的并集) 且("alias1" 与 "alias2" 的并集),推送内容是 - 内容为
  * MSG_CONTENT 的消息, 并且附加字段 from = JPush。
  *
  * @return
  */
 private static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {
   return PushPayload.newBuilder()
       .setPlatform(Platform.android_ios())
       .setAudience(
           Audience.newBuilder()
               .addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))
               .addAudienceTarget(AudienceTarget.alias("alias1", "alias2"))
               .build())
       .setMessage(
           Message.newBuilder().setMsgContent("MSG_CONTENT").addExtra("from", "JPush").build())
       .setOptions(Options.newBuilder().setApnsProduction(PRODUCT_MODE).build())
       .build();
 }
  @Test
  public void lackOfParams_messageAndNotificaiton() {
    JsonObject payload = new JsonObject();
    payload.add("platform", Platform.all().toJSON());
    payload.add("audience", Audience.all().toJSON());
    System.out.println("json string: " + payload.toString());

    try {
      _client.sendPush(payload.toString());
    } catch (APIConnectionException e) {
      e.printStackTrace();
    } catch (APIRequestException e) {
      assertEquals(LACK_OF_PARAMS, e.getErrorCode());
    }
  }
  @Test
  public void invalidParams_platform() {
    JsonObject payload = new JsonObject();
    payload.add("platform", new JsonPrimitive("all_platform"));
    payload.add("audience", Audience.all().toJSON());
    payload.add("notification", Notification.alert(ALERT).toJSON());
    System.out.println("json string: " + payload.toString());

    try {
      _client.sendPush(payload.toString());
    } catch (APIConnectionException e) {
      e.printStackTrace();
    } catch (APIRequestException e) {
      assertEquals(INVALID_PARAMS, e.getErrorCode());
    }
  }
  /** 发送jpush到工作端口 */
  @Override
  public boolean sendByRegisitrationIDToWorker(
      String msg, Map<String, String> extras, String... regisitrationIDs) {

    // PushPayload payload = PushPayload.newBuilder()
    // .setPlatform(Platform.all())
    // .setAudience(Audience.registrationId(regisitrationIDs))
    // .setNotification(Notification.newBuilder()
    // .addPlatformNotification(AndroidNotification.newBuilder()
    // .addExtra("orderID", orderID)
    // .build())
    // .build())
    // .setMessage(Message.content(msg))
    // .build();

    String extrasJson = new Gson().toJson(extras);
    // extrasJson = extrasJson.replaceAll("\"", "'");

    PushPayload payload =
        PushPayload.newBuilder()
            .setPlatform(Platform.all())
            .setAudience(Audience.registrationId(regisitrationIDs))
            // .setNotification(Notification.ios(msg, extras)) //alert(msg)
            .setMessage(
                Message.newBuilder().setMsgContent(msg).addExtra("data", extrasJson).build())
            .build();

    // PushPayload payload = PushPayload.newBuilder()
    // .setPlatform(Platform.all())
    // .setAudience(Audience.registrationId(regisitrationIDs))
    // .setNotification( Notification.android(msg, msg, extras)
    // //.ios(msg, extras)
    // Notification.alert("")
    // ).build();

    try {
      PushResult result = jpushClientForService.sendPush(payload);
      return result.isResultOK();
    } catch (Exception e1) {
      errorLogger.writeErrorLog(e1.getMessage());
      appLogger.error(e1.getMessage(), e1);
      debugLogger.error(e1.getMessage(), e1);
      return false;
    }
  }
 @Override
 public boolean sendAll(String msg) {
   PushPayload payload =
       PushPayload.newBuilder()
           .setPlatform(Platform.all())
           .setAudience(Audience.all())
           .setNotification(Notification.alert(msg))
           .build();
   try {
     PushResult result = jpushClient.sendPush(payload);
     return result.isResultOK();
   } catch (Exception e1) {
     errorLogger.writeErrorLog(e1.getMessage());
     appLogger.error(e1.getMessage(), e1);
     debugLogger.error(e1.getMessage(), e1);
     return false;
   }
 }
  @Test
  public void invalidParams_notification_winphone_empty() {
    JsonObject payload = new JsonObject();
    payload.add("platform", Platform.all().toJSON());
    payload.add("audience", Audience.all().toJSON());

    JsonObject notification = new JsonObject();
    JsonObject winphone = new JsonObject();

    notification.add("winphone", winphone);
    payload.add("notification", notification);

    System.out.println("json string: " + payload.toString());

    try {
      _client.sendPush(payload.toString());
    } catch (APIConnectionException e) {
      e.printStackTrace();
    } catch (APIRequestException e) {
      assertEquals(INVALID_PARAMS, e.getErrorCode());
    }
  }
  @Test
  public void invalidParams_notification_android_builderidNotNumber() {
    JsonObject payload = new JsonObject();
    payload.add("platform", Platform.all().toJSON());
    payload.add("audience", Audience.all().toJSON());

    JsonObject notification = new JsonObject();
    JsonObject android = new JsonObject();
    android.add("builder_id", new JsonPrimitive("builder_id_string"));

    notification.add("android", android);
    payload.add("notification", notification);

    System.out.println("json string: " + payload.toString());

    try {
      _client.sendPush(payload.toString());
    } catch (APIConnectionException e) {
      e.printStackTrace();
    } catch (APIRequestException e) {
      assertEquals(INVALID_PARAMS, e.getErrorCode());
    }
  }
 /**
  * 构建推送对象:平台是 iOS,推送目标是 "tag1", "tag_all" 的交集, 推送内容同时包括通知与消息 - 通知信息是 ALERT,角标数字为 5,通知声音为 "happy",
  * 并且附加字段 from = "JPush";消息内容是 MSG_CONTENT。通知是 APNs 推送通道的, 消息是 JPush 应用内消息通道的。APNs
  * 的推送环境是“生产”(如果不显式设置的话,Library 会默认指定为开发)
  *
  * @return
  */
 private static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage(
     String target,
     String targetAll,
     String messageTitle,
     String message,
     String otherTitle,
     String otherMessage) {
   return PushPayload.newBuilder()
       .setPlatform(Platform.ios())
       .setAudience(Audience.tag_and(target, targetAll))
       .setNotification(
           Notification.newBuilder()
               .addPlatformNotification(
                   IosNotification.newBuilder()
                       .setAlert(messageTitle)
                       .setBadge(5)
                       .setSound("happy.caf")
                       .addExtra(otherTitle, otherMessage)
                       .build())
               .build())
       .setMessage(Message.content(message))
       .setOptions(Options.newBuilder().setApnsProduction(PRODUCT_MODE).build())
       .build();
 }
  @Override
  public JsonElement toJSON() {
    JsonObject json = new JsonObject();
    if (null != platform) {
      json.add(PLATFORM, platform.toJSON());
    }
    if (null != audience) {
      json.add(AUDIENCE, audience.toJSON());
    }
    if (null != notification) {
      json.add(NOTIFICATION, notification.toJSON());
    }
    if (null != message) {
      json.add(MESSAGE, message.toJSON());
    }
    if (null != options) {
      json.add(OPTIONS, options.toJSON());
    }
    if (null != sms) {
      json.add(SMS, sms.toJSON());
    }

    return json;
  }