안드로이드 마시멜로 도즈모드에서의 gcm 사용

안드로이드 마시멜로에서 도즈모드가 추가되었습니다.
도즈모드는 전력사용을 최소화 하기 위해 앱들을 sleep 상태로 만듭니다.
이때 일반적인 GCM 메시지는 즉시 받을 수 없고 GCM에 저장되어 있다 단말이 깨어났을때 받게 됩니다.
도즈모드에서도 GCM 메시지를 받을 수 있게 설정하는 속성이 있습니다.

  • priority
    high : 단말이 도즈모드일때 해당 앱을 잠시깨워 메시지를 수신할 수 있게 합니다.
    normal : 단말이 도즈모드일때 메시지는 GCM에 저장되어 있다가 단말이 깨어나면 그때 수신합니다.

GCM json에 priority 값을 추가하시면 사용 가능하며, 값이 없을 경우 normal로 전송됩니다.

참고.
https://developers.google.com/cloud-messaging/concept-options

5개의 좋아요

안녕하세요?

priority 를 추가하여 도즈모드에서 깨우려 하는데 카카오 푸시를 통하면 해당 속성이 전달되지 않는 것 같습니다.

저희는 현재 서비스에서 카카오푸시를 사용하고 있으며,
이번에 priority 값만을 추가했습니다.

아래 파라미터를 카카오 https://kapi.kakao.com/{version}/push/send 로 호출해 보았습니다.
이대로는 도즈 모드에서는 수신되지 않고, 단말기를 깨우면 그때서야 수신이 되고 있습니다.

{
  "for_apns": {
    "sound": "default",
    "push_alert": true,
    "badge": 1,
    "message": "test8",
    "custom_field": {
      "type": 5,
      "eid": 8
    }
  },
  "for_gcm": {
    "delay_while_idle": false,
    "return_url": "http://xxx.xxxxx.xxx/v3.1/push/callback/fail/android",
    "collapse": "event:8",
    "priority" : "high",
    "custom_field": {
      "message": "test8",
      "type": 5,
      "eid": 8,
      "ebanner": "test8",
      "etitle": "test8"
    }
  }
}

대조테스트를 위해 https://gcm-http.googleapis.com/gcm/send 주소로 다음 파라미터를 직접 호출했을 때에는 도즈 모드에서도 수신이 가능했습니다.

{
    "to" : "{GCM_TOKEN_VALUE}",
    "priority" : "high",
    "collapse_key" : "test",
    "delay_while_idle" : false,
    "return_url" : "http://xxx.xxxx.xxx/v3.1/push/callback/fail/android",
    "data" : {
        "message" : "test",
        "type" : 5,
        "eid" : 1,
        "ebanner" : "test",
        "etitle" : "test"
    }
}

혹 문제가 있었다면 수정을 부탁드리겠습니다.
항상 잘 쓰고 있습니다. 감사합니다.

위 댓글에서 for_gcm에 지금 priority가 빠져있는데 추가해서 보내도 제대로 priority 설정이 안되는 것 같습니다.
“for_gcm”: {
“delay_while_idle”: false,
“return_url”: “http://xxx.xxxxx.xxx/v3.1/push/callback/fail/android”,
“collapse”: “event:8”,
“priority” : “high”,
“custom_field”: {
“message”: “test8”,
“type”: 5,
“eid”: 8,
“ebanner”: “test8”,
“etitle”: “test8”
}

네 맞아요. 원본에서 priority 항목이 없길래 수정했어요. 고마워요.

@elvis 님 계속 안되는데 이 문제 확인 좀 해주실 수 있을까요? 도움이 필요합니다.

@medmemara 혹시 요청을 추적할 수 있는 push_message 등의 정보를 좀 주실 수 있을까요? 얼핏 서버 요청으로는 priority 항목이 메시지에 안보여서요. cc: @elvis

이 토픽은 이제 고정이 풀렸습니다. 더이상 카테고리 상단에 보이지 않을 것입니다.

처음 질문글에 남긴 형태로 보냈습니다만 priority 항목이 작동하지 않는 것 같아 실서비스에는 적용하지 않았습니다.

어떤 항목을 드리면 될까요?
테스트로 푸시를 날리고 그 수신 토큰과 메시지 내용을 보내드리면 될까요?
무엇이 필요하신 것인지 잘 이해하지 못했습니다.

@medmemara 넵 맞아요. 테스트로 호출해주시고 대략 시간과 토큰 내용 등을 알려주시면 되요~

오늘 테스트호출 후 드리려고 했는데, 잘 되네요…ㄷㄷㄷ
죄송합니다.

하지만 문의 남길 때에는 정말로 안 됐었어요 ㅠ

@medmemara :smile: 잘되서 다행이에요! ㅎㅎㅎ