마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

DOZE모드의 단말에 FCM 전송시 단말이 반응하지 않는 문제

0 추천
안녕하세요.

같은 문제로 이전에 답변을 받았었는데 내용은 priority 값을 high로 세팅하라는 답변이었습니다.

관련 내용 검색 후 아래 메시지와 같이 적용하였는데요

{"data":
 {"message":"message here","title":"title here"},
 "to":"user token",
"android":{"priority":"high"}}

그럼에도 도즈모드에 빠져있는 단말로 FCM메시지가 전송되지 않아 고민입니다.

(FCM 서버에서는 정상적으로 보냈다고 response가 오지만 단말이 응답하지 않습니다. 평소에는 동작하고 Doze모드에서만요)

 

제가 틀리게 값을 설정한건지, 다른 방법이 있는지 도움 부탁드립니다.
음무 (17,850 포인트) 님이 1월 10일 질문

1개의 답변

+1 추천
 
채택된 답변
안녕하세요 저번 댓글해드렸던 지나가는 1인 입니다. 혹시 몰라 저도 확인해봤지만 전 정상작동하였고 살펴보다보니 페이로드 필드가 조금 독특한형태인데, 가이드 문서에 보면 priority필드는 data필드 바깥쪽에 되있더군요. 저도 확인차 질문자분처럼 priority필드를 data필드 안쪽으로 넣고 서버돌려보니 doze모드상태에선 앱이 푸시수신이 되지않고 사용자가 전원버튼을 눌러 깨어나는 타이밍에 수신이 되더군요. 즉 priority가 적용안된 상태같습니다. priority를 data필드 바깥으로 한뒤 테스트 해보시겠어요.
익명사용자 님이 1월 10일 답변
음무님이 1월 10일 채택됨
선생님이 사용중이신 데이터 포멧좀 받을 수 있을까요? 저도 전달해야하는값은 없고 단순히 메시지만 받으면 되기에 토큰넣고 priority 설정하는부분만 있으면 나머지 데이터는 아무래도 좋거든요 ..
가이드문서에 나와있는 데로

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

토큰값만 바꿔서 보내 봐도 Android에서는 리시브가 안되고 리스폰스로 to 라는 글자만 오네요 ..
var message = { //메시지 페이로드
                            to : deviceToken,
                            priority: "high",
                            data: {
                                key:value (보내실 데이터는 이부분에)
                            },
                        };

fcm.send(message, function(err, response){ // FCM 전송
                            if (err) {
                                if(message.to === null){
                                    console.log("디바이스 토큰이 없습니다");
                                }
                                console.log("Failed sent!",err);
                            } else {
                                console.log("Successfully sent ", response);
                            }
                        });
Node.js 환경에서 이런식으로 보내주고있습니다.
아, priority 를 android : { } 이 밖으로 빼라는 말씀이셨군요. 감사합니다 한번 테스트 해 보겠습니다
가이드 내용이 많아서 다 읽어보시려면 좀 걸리시긴하겠지만 좀더 살펴보시면 백그라운드 수신 포그라운드 수신 관련 내용도있는데요, notification필드를 함께넣으면 data필드내용은 백그라운드에서 못받게됩니다. 당장 더 파고들면 뭔가 복잡해지시니까 지금 만드셨던 페이로드 부분에서 priority부분만 밖으로 빼주시면 될것같아요.
잘 되네요 ! 감사합니다. 새해복많이받으세요
ㅎㅎ고생하셨습니다~ 즐코하시구 복받으세요
...