|
@@ -2,6 +2,10 @@ package com.lemon.lifecenter.scheduler.common;
|
|
|
|
|
|
import java.io.FileNotFoundException;
|
|
|
import java.io.IOException;
|
|
|
+import java.text.DateFormat;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
@@ -10,6 +14,7 @@ import org.springframework.core.io.ClassPathResource;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import com.google.auth.oauth2.GoogleCredentials;
|
|
|
+import com.google.firebase.ErrorCode;
|
|
|
import com.google.firebase.FirebaseApp;
|
|
|
import com.google.firebase.FirebaseOptions;
|
|
|
import com.google.firebase.messaging.AndroidConfig;
|
|
@@ -29,8 +34,9 @@ public class PushUtils {
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
|
|
- public void sendFcm(String deviceKey, String title, String content) {
|
|
|
+ public HashMap<String, String> sendFcm(String deviceKey, String title, String content) {
|
|
|
|
|
|
+ HashMap<String, String> result = new HashMap<String, String>();
|
|
|
try {
|
|
|
ClassPathResource cpr = new ClassPathResource("firebase/firebase_service_key.json");
|
|
|
FirebaseOptions options = new FirebaseOptions.Builder()
|
|
@@ -59,41 +65,64 @@ public class PushUtils {
|
|
|
String response = FirebaseMessaging.getInstance().send(message);
|
|
|
logger.error("response -- > " + response);
|
|
|
|
|
|
+ result.put("success", "success");
|
|
|
+ return result;
|
|
|
} catch (FileNotFoundException e) {
|
|
|
- logger.error("fileNotFound -- > " + e);
|
|
|
- errorMsg("FileNotFound");
|
|
|
+// logger.error("fileNotFound -- > " + e);
|
|
|
+ result.put("FileNotFound", "FileNotFound");
|
|
|
} catch (IOException e) {
|
|
|
- logger.error("IOException -- > " + e);
|
|
|
- errorMsg("IOException");
|
|
|
+// logger.error("IOException -- > " + e);
|
|
|
+ result.put("IOException", "IOException");
|
|
|
} catch (FirebaseMessagingException e) {
|
|
|
- logger.error("FirebaseMessagingException -- > " + e);
|
|
|
- errorMsg(e.getErrorCode().toString().trim());
|
|
|
+// logger.error("FirebaseMessagingException -- > " + e);
|
|
|
+// logger.error("FirebaseMessagingException -- > " + e.getErrorCode());
|
|
|
+// logger.error("FirebaseMessagingException -- > " + e.getMessage());
|
|
|
+// result = errorMsg(e.getErrorCode().toString().trim());
|
|
|
+ result.put(e.getErrorCode().toString().trim(), e.getMessage());
|
|
|
}
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
- private void errorMsg(String e) {
|
|
|
- String msg = "";
|
|
|
- if (fcmErrorCode().get(e) != null) {
|
|
|
- msg = fcmErrorCode().get(e);
|
|
|
- } else {
|
|
|
- msg = fcmErrorCode().get("FATAL");
|
|
|
- }
|
|
|
+// private String errorMsg(String e) {
|
|
|
+// String msg = "";
|
|
|
+// if (fcmErrorCode().get(e) != null) {
|
|
|
+// msg = fcmErrorCode().get(e);
|
|
|
+// } else {
|
|
|
+// msg = fcmErrorCode().get("FATAL");
|
|
|
+// }
|
|
|
+//
|
|
|
+// return msg;
|
|
|
+// }
|
|
|
+//
|
|
|
+// private HashMap<String, String> fcmErrorCode() {
|
|
|
+// HashMap<String, String> code = new HashMap<String, String>();
|
|
|
+// code.put("UNSPECIFIED_ERROR", "이 오류에 대한 추가 정보가 없습니다.");
|
|
|
+// code.put("INVALID_ARGUMENT", "(HTTP 오류 코드 = 400) 요청 매개 변수가 유효하지 않습니다. google.rpc.BadRequest 유형의 확장자가 리턴되어 유효하지 않은 필드를 지정합니다.");
|
|
|
+// code.put("UNREGISTERED", " (HTTP 오류 코드 = 404) FCM에서 앱 인스턴스가 등록 해제되었습니다. 이것은 일반적으로 사용 된 토큰이 더 이상 유효하지 않으며 새로운 토큰을 사용해야 함을 의미합니다.");
|
|
|
+// code.put("SENDER_ID_MISMATCH", "(HTTP 오류 코드 = 403) 인증 된 발신자 ID가 등록 토큰의 발신자 ID와 다릅니다.");
|
|
|
+// code.put("QUOTA_EXCEEDED", "(HTTP 오류 코드 = 429) 메시지 대상에 대한 전송 제한이 초과되었습니다. 초과 한 할당량을 지정하기 위해 google.rpc.QuotaFailure 유형의 확장이 반환됩니다..");
|
|
|
+// code.put("UNAVAILABLE", " (HTTP 오류 코드 = 503) 서버가 과부하되었습니다.");
|
|
|
+// code.put("INTERNAL", "(HTTP 오류 코드 = 500) 알 수없는 내부 오류가 발생했습니다.");
|
|
|
+// code.put("THIRD_PARTY_AUTH_ERROR", "(HTTP 오류 코드 = 401) APN 인증서 또는 웹 푸시 인증 키가 잘못되었거나 없습니다.");
|
|
|
+// code.put("FATAL", "알수없는 오류");
|
|
|
+// code.put("FileNotFound", "FileNotFound");
|
|
|
+// code.put("IOException", "IOException");
|
|
|
+// return code;
|
|
|
+// }
|
|
|
+
|
|
|
+ public String getNowYm() {
|
|
|
+ DateFormat dateFormat = new SimpleDateFormat("yyyyMM");
|
|
|
+ Date date = new Date();
|
|
|
+ return dateFormat.format(date);
|
|
|
}
|
|
|
|
|
|
- private HashMap<String, String> fcmErrorCode() {
|
|
|
- HashMap<String, String> code = new HashMap<String, String>();
|
|
|
- code.put("UNSPECIFIED_ERROR", "이 오류에 대한 추가 정보가 없습니다.");
|
|
|
- code.put("INVALID_ARGUMENT", "(HTTP 오류 코드 = 400) 요청 매개 변수가 유효하지 않습니다. google.rpc.BadRequest 유형의 확장자가 리턴되어 유효하지 않은 필드를 지정합니다.");
|
|
|
- code.put("UNREGISTERED", " (HTTP 오류 코드 = 404) FCM에서 앱 인스턴스가 등록 해제되었습니다. 이것은 일반적으로 사용 된 토큰이 더 이상 유효하지 않으며 새로운 토큰을 사용해야 함을 의미합니다.");
|
|
|
- code.put("SENDER_ID_MISMATCH", "(HTTP 오류 코드 = 403) 인증 된 발신자 ID가 등록 토큰의 발신자 ID와 다릅니다.");
|
|
|
- code.put("QUOTA_EXCEEDED", "(HTTP 오류 코드 = 429) 메시지 대상에 대한 전송 제한이 초과되었습니다. 초과 한 할당량을 지정하기 위해 google.rpc.QuotaFailure 유형의 확장이 반환됩니다..");
|
|
|
- code.put("UNAVAILABLE", " (HTTP 오류 코드 = 503) 서버가 과부하되었습니다.");
|
|
|
- code.put("INTERNAL", "(HTTP 오류 코드 = 500) 알 수없는 내부 오류가 발생했습니다.");
|
|
|
- code.put("THIRD_PARTY_AUTH_ERROR", "(HTTP 오류 코드 = 401) APN 인증서 또는 웹 푸시 인증 키가 잘못되었거나 없습니다.");
|
|
|
- code.put("FATAL", "알수없는 오류");
|
|
|
- code.put("FileNotFound", "FileNotFound");
|
|
|
- code.put("IOException", "IOException");
|
|
|
- return code;
|
|
|
+ public String getNextYm() {
|
|
|
+ DateFormat dateFormat = new SimpleDateFormat("yyyyMM");
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.add (cal.MONTH, + 1); //다음달
|
|
|
+
|
|
|
+ return dateFormat.format(cal.getTime());
|
|
|
}
|
|
|
|
|
|
public void apnsSend() {
|