From 2df290eda707bb9f5db79693d21eaf7f4337663c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Mon, 13 Jul 2026 20:24:19 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[feat]=20iOS=20FCM=20=ED=91=B8=EC=8B=9C=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?(#363)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -플랫폼 타입 IOS 지원 추가 --- .../adapter/in/web/request/FcmTokenRegisterRequest.java | 2 +- .../konkuk/thip/notification/domain/value/PlatformType.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/konkuk/thip/notification/adapter/in/web/request/FcmTokenRegisterRequest.java b/src/main/java/konkuk/thip/notification/adapter/in/web/request/FcmTokenRegisterRequest.java index c59ee0f56..232c15883 100644 --- a/src/main/java/konkuk/thip/notification/adapter/in/web/request/FcmTokenRegisterRequest.java +++ b/src/main/java/konkuk/thip/notification/adapter/in/web/request/FcmTokenRegisterRequest.java @@ -16,7 +16,7 @@ public record FcmTokenRegisterRequest( String fcmToken, @NotBlank(message = "플랫폼 타입은 필수입니다.") - @Schema(description = "플랫폼 타입 (ANDROID 또는 WEB)", example = "ANDROID") + @Schema(description = "플랫폼 타입 (ANDROID, WEB 또는 IOS)", example = "ANDROID") String platformType ) { public FcmTokenRegisterCommand toCommand(Long userId) { diff --git a/src/main/java/konkuk/thip/notification/domain/value/PlatformType.java b/src/main/java/konkuk/thip/notification/domain/value/PlatformType.java index c97995ab0..d712a3a6f 100644 --- a/src/main/java/konkuk/thip/notification/domain/value/PlatformType.java +++ b/src/main/java/konkuk/thip/notification/domain/value/PlatformType.java @@ -10,7 +10,8 @@ @RequiredArgsConstructor public enum PlatformType { ANDROID("ANDROID"), - WEB("WEB"); + WEB("WEB"), + IOS("IOS"); private final String value; From 9c6a449cd73214eb216b26197f556277d74e7d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Mon, 13 Jul 2026 20:24:30 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[feat]=20iOS=20FCM=20=EC=95=8C=EB=A6=BC=20A?= =?UTF-8?q?pnsConfig=20=EC=A0=81=EC=9A=A9=20(#363)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/FeedNotificationDispatchService.java | 9 +++++++++ .../service/RoomNotificationDispatchService.java | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/java/konkuk/thip/message/application/service/FeedNotificationDispatchService.java b/src/main/java/konkuk/thip/message/application/service/FeedNotificationDispatchService.java index a029d11b3..dc6680517 100644 --- a/src/main/java/konkuk/thip/message/application/service/FeedNotificationDispatchService.java +++ b/src/main/java/konkuk/thip/message/application/service/FeedNotificationDispatchService.java @@ -1,5 +1,7 @@ package konkuk.thip.message.application.service; +import com.google.firebase.messaging.ApnsConfig; +import com.google.firebase.messaging.Aps; import com.google.firebase.messaging.Message; import com.google.firebase.messaging.Notification; import konkuk.thip.message.application.port.in.FeedNotificationDispatchUseCase; @@ -74,6 +76,7 @@ private void push(Long userId, Notification n, Long notificationId) { .putData("category", NotificationCategory.FEED.getDisplay()) .putData("action", "OPEN_NOTIFICATION") // FE는 이 액션으로 알림 상세/라우팅을 BE api 요청으로 처리 .putData("notificationId", String.valueOf(notificationId)) + .setApnsConfig(buildApnsConfig()) .build(); msgs.add(m); @@ -87,4 +90,10 @@ private void push(Long userId, Notification n, Long notificationId) { private Notification buildFcmNotification(final String title, final String body) { return Notification.builder().setTitle(title).setBody(body).build(); } + + private ApnsConfig buildApnsConfig() { + return ApnsConfig.builder() + .setAps(Aps.builder().setSound("default").build()) + .build(); + } } diff --git a/src/main/java/konkuk/thip/message/application/service/RoomNotificationDispatchService.java b/src/main/java/konkuk/thip/message/application/service/RoomNotificationDispatchService.java index 97abbdd4a..5f09e77f7 100644 --- a/src/main/java/konkuk/thip/message/application/service/RoomNotificationDispatchService.java +++ b/src/main/java/konkuk/thip/message/application/service/RoomNotificationDispatchService.java @@ -1,5 +1,7 @@ package konkuk.thip.message.application.service; +import com.google.firebase.messaging.ApnsConfig; +import com.google.firebase.messaging.Aps; import com.google.firebase.messaging.Message; import com.google.firebase.messaging.Notification; import konkuk.thip.message.application.port.in.RoomNotificationDispatchUseCase; @@ -86,6 +88,7 @@ private void push(Long userId, String title, String content, Long notificationId .putData("category", NotificationCategory.ROOM.getDisplay()) .putData("action", "OPEN_NOTIFICATION") // FE는 이 액션으로 알림 상세/라우팅을 BE api 요청으로 처리 .putData("notificationId", String.valueOf(notificationId)) + .setApnsConfig(buildApnsConfig()) .build(); msgs.add(m); tk.add(t.getFcmToken()); dev.add(t.getDeviceId()); } @@ -99,4 +102,10 @@ private Notification buildNotification(final String title, final String body) { .setBody(body) .build(); } + + private ApnsConfig buildApnsConfig() { + return ApnsConfig.builder() + .setAps(Aps.builder().setSound("default").build()) + .build(); + } }