public class FirebaseCloudMessageService {
// 알림 메시지와 데이터 페이로드 포함
public static void sendMessage(String registrationToken, String content, int messageId, int roomId, String name, String userProfile) throws Exception {
// 데이터 메세지
// 포그라운드, 백그라운드에서는 직접 일관되게 처리
Message message = Message.builder() // 메시지 구성을 시작할 수 있는 Builder 객체가 반환
.putData("title", name) // 알림 제목을 데이터 페이로드에 추가
.putData("userProfile", userProfile)
.putData("body", content) // 메시지 본문을 데이터 페이로드에 추가
.putData("messageId", String.valueOf(messageId))// 메세지 id를 데이터 페이로드에 추가
.putData("roomId", String.valueOf(roomId)) // room id를 데이터 페이로드에 추가
.setAndroidConfig(AndroidConfig.builder()
.setPriority(AndroidConfig.Priority.HIGH) // 우선 순위를 HIGH로 설정
.build())
.setToken(registrationToken) // 메시지의 수신자를 지정
.build(); // 최종 Message 객체를 생성
// 메시지 보내기
FirebaseMessaging.getInstance().send(message);
System.out.println("Successfully sent message: " + message);
}
}
fcm을 쓰다가 한번씩 너무 늦게 알림이 도착하거나, 누락되는 문제가 발생했다.
네트워크 연결 상태 문제는 아니였고, 알림 설정을 비활성화 한것은 아니였다.
찾아보니, fcm에는 우선순위라흔게 존재한다,
fcm 메세지에 'high' 우선순위를 설정하지 않은 경우, 특히 앱이 백그라운드에 있을때
메세지 전달이 지연될 수 있다는 것이다...
따라서, 메세지에 setPriority(Priority.HIGH)를 설정하여, 우선순위를 높여야 한다.
이후에는 알림 누락이 없이 바로 알림을 전송받을 수 있었다.
'Android' 카테고리의 다른 글
<Android> 동영상 s3 업로드 시, 진행률(%) 추적하는 방법, progress bar 알림 만들기 (1) | 2024.04.26 |
---|---|
fcm 콘솔에서 서버키 못찾는 경우 해결방법 (0) | 2024.04.09 |
FirebaseMessaging.getInstance().getToken() 메서드가 호출안됨 (0) | 2024.03.30 |
안드로이드 스튜디오 layout editor 개념정리 (0) | 2023.09.12 |
안드로이드 매니패스트(manifest) 파일 (0) | 2023.09.09 |