안드로이드 FCM 메시지 수신 문제 문의

디벨로퍼스 앱 ID: 1250156

kakao_flutter_sdk : 1.9.7+3

안녕하세요, 현재 안드로이드는 카카오 디벨로퍼스에 FCM 등록 후 푸시 서비스를 사용하고 있습니다.

푸시 관련 두가지 문의사항이 있습니다.

  1. 서버에서 카카오 푸시 발송 API를 호출하였지만 안드로이드는 알림이 오지 않고 몇 시간 후에 쌓였던 푸시 알림이 한꺼번에 들어오는 현상이 있습니다. 어떤 이유로 이런 현상이 발생하는지 알 수 있을까요? (iOS는 정상적으로 즉각 알림이 옵니다.)
  2. 하나의 디바이스에서 디바이스 토큰을 여러번 (서로 다른 토큰값) 등록한 뒤에 토큰 조회를 해보면 등록된 모든 토큰이 조회됩니다. 그렇다면 푸시 전송 요청 시점에 등록된 모든 디바이스 토큰으로 전송되나요? 만약 그렇다면 중복 메시지 수신이 되는 것인지 아니면 유효한 하나의 토큰만으로 수신받게 되는지 궁금합니다.
    1. 카카오에서는 유효성 여부를 판단하지 않고 등록된 모든 토큰으로 발송을 시도하는 것인가요?
    2. 모든 토큰으로 발송할 경우 하나의 디바이스에서 메시지를 중복 수신할 가능성이 있을까요?

안녕하세요.

1.안드로이드 기기의 절전기능(Doze 모드 / 배터리 최적화)이 활성화되어 있는지 확인해보시겠어요?
ㄴ PushMsgJson: for_fcm의 priority는 어떤 값으로 보내셨나요?

  1. 디바이스 토큰이 유효하지 않다면 발송 실패합니다. (유효하다면 중복 수신 가능)
1개의 좋아요

안녕하세요 빠른 답변 감사드립니다.

서버에서 따로 priority 설정 하고있지 않아 기본값인 normal 로 지정될 것 같습니다.

이 부분은 수정하여 시도해보고 지속될 경우 다시 댓글로 추가 문의 드릴 수 있도록 하곘습니다.

감사합니다.

1개의 좋아요

안녕하세요, priority 값을 high로 설정한 후에도 지속되고 있습니다.

추가적으로 확인해주실 수 있는 내용이나 추측되는 원인이 있을까요?

안녕하세요.

푸시알림 제공하는 부서에 확인 요청 위해 아래 내용 기재 해주시겠어요?

(1) 증상 상세
(2) 관련 로그 및 호출 시간

디벨로퍼스 앱 ID: 1250156

kakao_flutter_sdk : 1.9.7+3

  1. 증상 상세
  • 서버에서 /send API 호출을 하였지만 iOS는 즉각 알림이 도착, Android 기기는 몇 시간 뒤에 수신하거나 수신하지 못합니다.
  • postman으로 직접 호출하여 테스트해보니 앱이 종료되었거나 백그라운드 상태에서 수신을 못 합니다. 수신 시점에 안드로이드 기기에서 지금까지 쌓여있던 메세지가 한번에 수신되거나 수신하지 못합니다.
  • priority = high를 주었지만 동일 현상 발생.
  • 수신되는 시점이나 수신되는 조건에 대해서 제가 파악한 내용이 정확하지 않을 수 있으며 토큰 조회로 디바이스 토큰은 등록되어있는 것은 확인했습니다.
  1. 관련 로그 및 호출 시간
  • send 호출 시점의 HTTP status 200 OK, 그 외 특이 사항 없음.
  • 호출 시간
    • 7월 23일 (목) 오후 3시33분 1회 발송, 오후 3시 46분 1회, 오후 3시 47분 2회 발송.

호출 시간을 기준으로 확인해주시면 좋겠습니다. (iOS는 정상 수신)

증상 상세 부분을 일부 수정했습니다.

안녕하세요.

설명해주신 내용을 보면 API 문제라기 보다 단말의 수신 처리 문제로 보이는데요.
다른 기기로도 동일한 현상인지 확인 부탁드리고 아래 내용 검토 해주시겠어요?

(1) notification을 포함하면 앱이 백그라운드 상태일 때 Android 시스템 알림 영역에 직접 표시된다고 합니다.

https://developers.kakao.com/docs/ko/push/rest-api#push-alarm-request-body-pushmsgjson-fcm

notification JSON을 구성 해보시면 좋을 것 같고

(2) notification 필드 없이 custom_field 만 사용하는 경우 firebase_messaging의 백그라운드 핸들러가 등록되어 있어야 한다는데요.

  FirebaseMessaging.onBackgroundMessage(
    firebaseMessagingBackgroundHandler,
  );

이부분 처리부도 확인 부탁드려요.

안녕하세요.
마지막 답변해주신 내용으로 원인 찾고 해결했습니다.
지원 감사합니다.

1개의 좋아요