From cb63f511113a61d37f1588fc5a8155955c905adc Mon Sep 17 00:00:00 2001 From: ehtjsv2 Date: Tue, 19 Nov 2024 16:05:59 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20NotificationService=EC=9D=98=20?= =?UTF-8?q?=EB=8B=A4=EB=A5=B8=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ChatSocketCommandService.java | 16 ++--- .../service/ChatNotificationService.java | 44 +++++++++++++ .../service/FakeNotificationService.java | 28 ++++----- .../service/FcmNotificationService.java | 63 ++++--------------- .../service/FootprintNotificationService.java | 13 ++-- .../service/NotificationService.java | 22 ++++--- .../PlaygroundNotificationService.java | 18 ++++-- .../service/FcmNotificationServiceTest.java | 3 +- 8 files changed, 115 insertions(+), 92 deletions(-) create mode 100644 backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java diff --git a/backend/src/main/java/com/happy/friendogly/chatsocket/service/ChatSocketCommandService.java b/backend/src/main/java/com/happy/friendogly/chatsocket/service/ChatSocketCommandService.java index d78812b52..070c692dd 100644 --- a/backend/src/main/java/com/happy/friendogly/chatsocket/service/ChatSocketCommandService.java +++ b/backend/src/main/java/com/happy/friendogly/chatsocket/service/ChatSocketCommandService.java @@ -4,20 +4,20 @@ import static com.happy.friendogly.chatsocket.domain.MessageType.ENTER; import static com.happy.friendogly.chatsocket.domain.MessageType.LEAVE; -import com.happy.friendogly.chatsocket.template.ChatTemplate; import com.happy.friendogly.chatmessage.domain.ChatMessage; +import com.happy.friendogly.chatmessage.repository.ChatMessageRepository; import com.happy.friendogly.chatroom.domain.ChatRoom; +import com.happy.friendogly.chatroom.repository.ChatRoomRepository; import com.happy.friendogly.chatsocket.domain.MessageType; import com.happy.friendogly.chatsocket.dto.request.ChatMessageSocketRequest; import com.happy.friendogly.chatsocket.dto.response.ChatMessageSocketResponse; -import com.happy.friendogly.chatmessage.repository.ChatMessageRepository; -import com.happy.friendogly.chatroom.repository.ChatRoomRepository; +import com.happy.friendogly.chatsocket.template.ChatTemplate; import com.happy.friendogly.club.domain.Club; import com.happy.friendogly.club.repository.ClubRepository; import com.happy.friendogly.exception.FriendoglyException; import com.happy.friendogly.member.domain.Member; import com.happy.friendogly.member.repository.MemberRepository; -import com.happy.friendogly.notification.service.NotificationService; +import com.happy.friendogly.notification.service.ChatNotificationService; import java.time.LocalDateTime; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,7 +32,7 @@ public class ChatSocketCommandService { private final ClubRepository clubRepository; private final ChatRoomRepository chatRoomRepository; private final ChatMessageRepository chatMessageRepository; - private final NotificationService notificationService; + private final ChatNotificationService chatNotificationService; private final ChatTemplate template; public ChatSocketCommandService( @@ -40,14 +40,14 @@ public ChatSocketCommandService( ClubRepository clubRepository, ChatRoomRepository chatRoomRepository, ChatMessageRepository chatMessageRepository, - NotificationService notificationService, + ChatNotificationService chatNotificationService, ChatTemplate template ) { this.memberRepository = memberRepository; this.clubRepository = clubRepository; this.chatRoomRepository = chatRoomRepository; this.chatMessageRepository = chatMessageRepository; - this.notificationService = notificationService; + this.chatNotificationService = chatNotificationService; this.template = template; } @@ -79,7 +79,7 @@ private void sendAndSave(MessageType messageType, String content, ChatRoom chatR messageType, content, senderMember, LocalDateTime.now()); Club club = clubRepository.getByChatRoomId(chatRoom.getId()); - notificationService.sendChatNotification(chatRoom.getId(), chat, club); + chatNotificationService.sendChatNotification(chatRoom.getId(), chat, club); template.convertAndSend(chatRoom.getId(), chat); chatMessageRepository.save(new ChatMessage(chatRoom, messageType, senderMember, content)); } diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java new file mode 100644 index 000000000..87559e844 --- /dev/null +++ b/backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java @@ -0,0 +1,44 @@ +package com.happy.friendogly.notification.service; + +import static com.happy.friendogly.notification.domain.NotificationType.CHAT; + +import com.happy.friendogly.chatsocket.dto.response.ChatMessageSocketResponse; +import com.happy.friendogly.club.domain.Club; +import com.happy.friendogly.notification.repository.DeviceTokenRepository; +import java.util.List; +import java.util.Map; +import org.springframework.stereotype.Service; + +@Service +public class ChatNotificationService { + + private final DeviceTokenRepository deviceTokenRepository; + private final NotificationService notificationService; + + public ChatNotificationService( + DeviceTokenRepository deviceTokenRepository, + NotificationService notificationService + ) { + this.deviceTokenRepository = deviceTokenRepository; + this.notificationService = notificationService; + } + + public void sendChatNotification(Long chatRoomId, ChatMessageSocketResponse response, Club club) { + List receiverTokens = deviceTokenRepository + .findAllByChatRoomIdWithoutMine(chatRoomId, response.senderMemberId()); + + Map data = Map.of( + "chatRoomId", chatRoomId.toString(), + "messageType", response.messageType().toString(), + "senderMemberId", response.senderMemberId().toString(), + "senderName", response.senderName(), + "content", response.content(), + "createdAt", response.createdAt().toString(), + "profilePictureUrl", response.profilePictureUrl(), + "clubPictureUrl", club.getImageUrl(), + "clubTitle", club.getTitle().getValue() + ); + + notificationService.sendNotification("채팅", data, CHAT, receiverTokens); + } +} diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/FakeNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/FakeNotificationService.java index be48016df..2cd47dfe4 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/FakeNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/FakeNotificationService.java @@ -1,8 +1,8 @@ package com.happy.friendogly.notification.service; -import com.happy.friendogly.chatsocket.dto.response.ChatMessageSocketResponse; -import com.happy.friendogly.club.domain.Club; +import com.happy.friendogly.notification.domain.NotificationType; import java.util.List; +import java.util.Map; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; @@ -11,22 +11,22 @@ public class FakeNotificationService implements NotificationService { @Override - public void sendFootprintNotification(String title, String content, String receiverToken) { + public void sendNotification( + String title, + String content, + NotificationType notificationType, + List receiverTokens + ) { } @Override - public void sendFootprintNotification(String title, String content, List receiverTokens) { - - } - - @Override - public void sendChatNotification(Long chatRoomId, ChatMessageSocketResponse response, Club club) { - - } - - @Override - public void sendPlaygroundJoinNotification(String title, String content, List receiverTokens) { + public void sendNotification( + String title, + Map contents, + NotificationType notificationType, + List receiverTokens + ) { } } diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java index 60936079d..9a8b2312b 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java @@ -1,16 +1,11 @@ package com.happy.friendogly.notification.service; -import static com.happy.friendogly.notification.domain.NotificationType.CHAT; -import static com.happy.friendogly.notification.domain.NotificationType.FOOTPRINT; -import static com.happy.friendogly.notification.domain.NotificationType.PLAYGROUND; import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; import com.google.firebase.FirebaseApp; import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.messaging.FirebaseMessagingException; import com.google.firebase.messaging.MulticastMessage; -import com.happy.friendogly.chatsocket.dto.response.ChatMessageSocketResponse; -import com.happy.friendogly.club.domain.Club; import com.happy.friendogly.exception.FriendoglyException; import com.happy.friendogly.notification.domain.NotificationType; import com.happy.friendogly.notification.repository.DeviceTokenRepository; @@ -38,61 +33,25 @@ public FcmNotificationService( } @Override - public void sendFootprintNotification(String title, String content, String receiverToken) { - Map data = Map.of( - "body", content - ); - - sendNotificationWithType(FOOTPRINT, title, data, List.of(receiverToken)); - } - - @Override - public void sendFootprintNotification(String title, String content, List receiverTokens) { - Map data = Map.of( - "body", content - ); - - sendNotificationWithType(FOOTPRINT, title, data, receiverTokens); - } - - @Override - public void sendChatNotification(Long chatRoomId, ChatMessageSocketResponse response, Club club) { - List receiverTokens = deviceTokenRepository - .findAllByChatRoomIdWithoutMine(chatRoomId, response.senderMemberId()); - - Map data = Map.of( - "chatRoomId", chatRoomId.toString(), - "messageType", response.messageType().toString(), - "senderMemberId", response.senderMemberId().toString(), - "senderName", response.senderName(), - "content", response.content(), - "createdAt", response.createdAt().toString(), - "profilePictureUrl", response.profilePictureUrl(), - "clubPictureUrl", club.getImageUrl(), - "clubTitle", club.getTitle().getValue() - ); - - sendNotificationWithType(CHAT, "채팅", data, receiverTokens); + public void sendNotification( + String title, + String content, + NotificationType notificationType, + List receiverTokens + ) { + sendNotification(title, Map.of("body", content), notificationType, receiverTokens); } @Override - public void sendPlaygroundJoinNotification(String title, String content, List receiverTokens) { - Map data = Map.of( - "body", content - ); - - sendNotificationWithType(PLAYGROUND, title, data, receiverTokens); - } - - private void sendNotificationWithType( - NotificationType notificationType, + public void sendNotification( String title, - Map data, + Map contents, + NotificationType notificationType, List receiverTokens ) { if (!receiverTokens.isEmpty()) { MulticastMessage message = MulticastMessage.builder() - .putAllData(data) + .putAllData(contents) .putData("type", notificationType.toString()) .putData("title", title) .addAllTokens(receiverTokens) diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java index 57dbc688c..3e1e50149 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java @@ -1,5 +1,7 @@ package com.happy.friendogly.notification.service; +import static com.happy.friendogly.notification.domain.NotificationType.FOOTPRINT; + import com.happy.friendogly.footprint.domain.Footprint; import com.happy.friendogly.footprint.domain.WalkStatus; import com.happy.friendogly.notification.domain.DeviceToken; @@ -35,19 +37,21 @@ public void sendWalkNotificationToMe(Long memberId, WalkStatus currentWalkStatus return; } - notificationService.sendFootprintNotification( + notificationService.sendNotification( DEFAULT_TITLE, content, - deviceTokenRepository.getByMemberId(memberId).getDeviceToken() + FOOTPRINT, + List.of(deviceTokenRepository.getByMemberId(memberId).getDeviceToken()) ); } public void sendWalkComingNotification(String comingMemberName, List nearFootprints) { List nearDeviceTokens = toDeviceToken(nearFootprints); - notificationService.sendFootprintNotification( + notificationService.sendNotification( DEFAULT_TITLE, "내 산책 장소에 " + comingMemberName + "님도 산책온대요!", + FOOTPRINT, nearDeviceTokens ); } @@ -55,8 +59,9 @@ public void sendWalkComingNotification(String comingMemberName, List public void sendWalkStartNotificationToNear(String startMemberName, List nearFootprints) { List nearDeviceTokens = toDeviceToken(nearFootprints); - notificationService.sendFootprintNotification(DEFAULT_TITLE, + notificationService.sendNotification(DEFAULT_TITLE, "내 산책장소에 " + startMemberName + "님이 산책을 시작했어요!", + FOOTPRINT, nearDeviceTokens ); } diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/NotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/NotificationService.java index d1b053427..8f0b3d121 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/NotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/NotificationService.java @@ -1,16 +1,22 @@ package com.happy.friendogly.notification.service; -import com.happy.friendogly.chatsocket.dto.response.ChatMessageSocketResponse; -import com.happy.friendogly.club.domain.Club; +import com.happy.friendogly.notification.domain.NotificationType; import java.util.List; +import java.util.Map; public interface NotificationService { - void sendFootprintNotification(String title, String content, String receiverToken); + void sendNotification( + String title, + String content, + NotificationType notificationType, + List receiverTokens + ); - void sendFootprintNotification(String title, String content, List receiverTokens); - - void sendChatNotification(Long chatRoomId, ChatMessageSocketResponse response, Club club); - - void sendPlaygroundJoinNotification(String title, String content, List receiverTokens); + void sendNotification( + String title, + Map contents, + NotificationType notificationType, + List receiverTokens + ); } diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java index c2a26972c..a6b37dd25 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java @@ -1,5 +1,7 @@ package com.happy.friendogly.notification.service; +import static com.happy.friendogly.notification.domain.NotificationType.PLAYGROUND; + import com.happy.friendogly.notification.domain.DeviceToken; import com.happy.friendogly.notification.repository.DeviceTokenRepository; import com.happy.friendogly.playground.domain.PlaygroundMember; @@ -15,19 +17,25 @@ public class PlaygroundNotificationService { private final DeviceTokenRepository deviceTokenRepository; private final NotificationService notificationService; - public PlaygroundNotificationService(DeviceTokenRepository deviceTokenRepository, - NotificationService notificationService) { + public PlaygroundNotificationService( + DeviceTokenRepository deviceTokenRepository, + NotificationService notificationService + ) { this.deviceTokenRepository = deviceTokenRepository; this.notificationService = notificationService; } - public void sendJoinNotification(String newParticipatingMember, - List existingParticipatingMembers) { + public void sendJoinNotification( + String newParticipatingMember, + List existingParticipatingMembers + ) { List deviceTokens = toDeviceToken(existingParticipatingMembers); String content = newParticipatingMember + "님이 놀이터에 참여했습니다"; - notificationService.sendPlaygroundJoinNotification(DEFAULT_TITLE, + notificationService.sendNotification( + DEFAULT_TITLE, content, + PLAYGROUND, deviceTokens ); } diff --git a/backend/src/test/java/com/happy/friendogly/notification/service/FcmNotificationServiceTest.java b/backend/src/test/java/com/happy/friendogly/notification/service/FcmNotificationServiceTest.java index e22f21e37..03de21bc6 100644 --- a/backend/src/test/java/com/happy/friendogly/notification/service/FcmNotificationServiceTest.java +++ b/backend/src/test/java/com/happy/friendogly/notification/service/FcmNotificationServiceTest.java @@ -7,6 +7,7 @@ import com.google.firebase.FirebaseApp; import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.messaging.FirebaseMessagingException; +import com.happy.friendogly.notification.domain.NotificationType; import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -31,7 +32,7 @@ class FcmNotificationServiceTest { @Test void sendFootprintNotification() throws FirebaseMessagingException { // when - fcmNotificationService.sendFootprintNotification("title", "content", List.of()); + fcmNotificationService.sendNotification("title", "content", NotificationType.FOOTPRINT, List.of()); // then verify(firebaseMessaging, never()).sendEachForMulticast(any()); From ab7288b7e96932302c0ed03caaf94aa183f4ab69 Mon Sep 17 00:00:00 2001 From: ehtjsv2 Date: Wed, 20 Nov 2024 14:55:17 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20ChatNotificationService=20Map.of()?= =?UTF-8?q?=20NPE=EA=B0=80=EB=8A=A5=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notification/service/ChatNotificationService.java | 4 ++-- .../notification/service/FcmNotificationService.java | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java index 87559e844..04e06eacc 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/ChatNotificationService.java @@ -34,8 +34,8 @@ public void sendChatNotification(Long chatRoomId, ChatMessageSocketResponse resp "senderName", response.senderName(), "content", response.content(), "createdAt", response.createdAt().toString(), - "profilePictureUrl", response.profilePictureUrl(), - "clubPictureUrl", club.getImageUrl(), + "profilePictureUrl", response.profilePictureUrl() == null ? "" : response.profilePictureUrl(), + "clubPictureUrl", club.getImageUrl() == null ? "" : club.getImageUrl(), "clubTitle", club.getTitle().getValue() ); diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java index 9a8b2312b..2e2df036f 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/FcmNotificationService.java @@ -8,7 +8,6 @@ import com.google.firebase.messaging.MulticastMessage; import com.happy.friendogly.exception.FriendoglyException; import com.happy.friendogly.notification.domain.NotificationType; -import com.happy.friendogly.notification.repository.DeviceTokenRepository; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; @@ -22,14 +21,9 @@ public class FcmNotificationService implements NotificationService { private final FirebaseMessaging firebaseMessaging; - private final DeviceTokenRepository deviceTokenRepository; - public FcmNotificationService( - @Autowired FirebaseApp firebaseApp, - DeviceTokenRepository deviceTokenRepository - ) { + public FcmNotificationService(@Autowired FirebaseApp firebaseApp) { this.firebaseMessaging = FirebaseMessaging.getInstance(firebaseApp); - this.deviceTokenRepository = deviceTokenRepository; } @Override From 24d1292a9973ef9849d25fc42e741a552401f6b6 Mon Sep 17 00:00:00 2001 From: ehtjsv2 Date: Sun, 24 Nov 2024 15:23:26 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20=EC=83=81=EC=88=98=20static=20?= =?UTF-8?q?=ED=82=A4=EC=9B=8C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notification/service/FootprintNotificationService.java | 3 ++- .../notification/service/PlaygroundNotificationService.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java index 3e1e50149..ea7413173 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java @@ -13,7 +13,8 @@ @Service public class FootprintNotificationService { - private final String DEFAULT_TITLE = "반갑개"; + private static final String DEFAULT_TITLE = "반갑개"; + private final NotificationService notificationService; private final DeviceTokenRepository deviceTokenRepository; diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java index a6b37dd25..bfb75f1c4 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/PlaygroundNotificationService.java @@ -12,7 +12,7 @@ @Service public class PlaygroundNotificationService { - private final String DEFAULT_TITLE = "반갑개"; + private static final String DEFAULT_TITLE = "반갑개"; private final DeviceTokenRepository deviceTokenRepository; private final NotificationService notificationService; From 2e452d7c76eaa82624a52249b0fdefd7e602acb8 Mon Sep 17 00:00:00 2001 From: ehtjsv2 Date: Sun, 24 Nov 2024 15:24:13 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20enum=EB=B3=80=EC=88=98=20static?= =?UTF-8?q?=20import=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/FootprintNotificationService.java | 9 ++++----- .../service/PlaygroundNotificationService.java | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java b/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java index ea7413173..bf0166b41 100644 --- a/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java +++ b/backend/src/main/java/com/happy/friendogly/notification/service/FootprintNotificationService.java @@ -1,10 +1,9 @@ package com.happy.friendogly.notification.service; -import static com.happy.friendogly.notification.domain.NotificationType.FOOTPRINT; - import com.happy.friendogly.footprint.domain.Footprint; import com.happy.friendogly.footprint.domain.WalkStatus; import com.happy.friendogly.notification.domain.DeviceToken; +import com.happy.friendogly.notification.domain.NotificationType; import com.happy.friendogly.notification.repository.DeviceTokenRepository; import java.util.List; import java.util.Optional; @@ -41,7 +40,7 @@ public void sendWalkNotificationToMe(Long memberId, WalkStatus currentWalkStatus notificationService.sendNotification( DEFAULT_TITLE, content, - FOOTPRINT, + NotificationType.FOOTPRINT, List.of(deviceTokenRepository.getByMemberId(memberId).getDeviceToken()) ); } @@ -52,7 +51,7 @@ public void sendWalkComingNotification(String comingMemberName, List notificationService.sendNotification( DEFAULT_TITLE, "내 산책 장소에 " + comingMemberName + "님도 산책온대요!", - FOOTPRINT, + NotificationType.FOOTPRINT, nearDeviceTokens ); } @@ -62,7 +61,7 @@ public void sendWalkStartNotificationToNear(String startMemberName, List