푸시 확인 관련 문의

  • 프로젝트명 : 내일의 용사 키우기

푸시 관련해서 문의 드립니다.
푸시 기능을 구현을 하고 테스트 푸시까지는 완료 했었습니다.
클라이언트에 푸시 받는 기능을 추가하고 푸시 기능을 사용 해 봤는데요.

테스트 푸시를 받았던 기기에만 전체 대상 푸시가 도착한 듯 해서 관련해 이것저것 하다가 확인 차 문의 드립니다.

  1. 콘솔에서 푸시를 받은 대상 확인이 가능한 메뉴가 있을지요?
  2. 콘솔에서 푸시 발송 할 대상(푸시를 받겠다고 등록이 돼 있는 유저) 확인 이 가능한 메뉴가 있을까요?
  3. 푸시가 전달되는 대상의 조건이 등록 외에 있을까요?
  • 현재 게임에 로그인이 돼 있는 대상 제외 등
  • 오늘 게임에 로그인 기록이 있는 대상 제외 등
  1. 푸시 등록 시 게스트 계정과 패더레이션 전환 계정이 차이가 있을지요?
  2. 금일 12시에 첫 푸시를 발송 해 봤는데요. 혹시 오늘 12시에 푸시가 몇명에게 발송이 됐는지 확인해 주실 수 있으실지요? 일단 요금제에서는 2명한테 발송 했다고 나오기는 하는데, 실시간 적용 된 것일까요?
  3. 콘솔에서 푸시 등록이 안되면 테스트 발송도 안 되던데, 아이디를 찾아서 테스트 발송을 2번 정도 눌렀는데, 테스트 발송 된 푸시가 제 기기에 도착이 안 됐습니다. 테스트 발송 관련 제한 사항이 있을까요?
  4. 푸시 테스트 등록 캔슬 함수 관련하여 문의 입니다.
  • 이미 등록 된 기기에서 토큰 등록 함수를 호출하는 경우, 문제가 될까요?
  1. 동일 계정이 다회 토큰 등록 함수를 보내는 경우,
  2. 다른 계정으로 로그인하여 같은 기기에서 토큰 등록 함수를 호출하는 경우,

발생 현상

일단 두 계정 모두 204를 받았습니다만,
이후 해당 기기에 테스트 푸시가 오지 않는 현상이 발생했습니다.
콘솔에서 푸시를 발송하려고하지 나중에 등록한 계정(게스트)에는 토큰이 등록 돼 있지 않다고 하고,
첫번째 계정은 토큰 미등록 알림은 안 뜨지만, 기기에 푸시가 도착하지 않습니다.

어떻게 처리를 해야 정상적으로 푸시를 발송 관련해서 문제 없이 이용 할 수 있을까요 ㅠ

확인 부탁드립니다~

안녕하세요 개발자님
문의하신 내용에 순차적으로 답변드립니다.

  1. 콘솔을 통해서 푸시 수신 대상의 확인을 제공하고 있지 않습니다.
  2. 콘솔을 통해서 푸시 발송 대상의 정보를 제공하고 있지 않습니다.
  3. 푸시는 디바이스 토큰이 등록된 유저에 한해 발송되며, 플레이 중이지 않을 때 발송됩니다. (앱종료, 백그라운드 상황 등에서 푸시 발송)
  4. 게스트 계정과 페더레이션 계정의 차이는 없습니다.
  5. 275명의 유저에게 발송된 것으로 확인됩니다. (요금 집계는 실시간 반영되지 않습니다.)
  6. 테스트 발송 관련 별도의 제한사항은 없으며 일반 푸시와 동일하게 작동합니다.
  7. 다음과 같은 여러 환경에서 테스트를 진행하였으나 과정상 푸시가 수신되지 않는 상황을 확인하지 못하였습니다.
    • 테스트 상황 1
      • 1번 기기에서 A 계정으로 로그인 후 푸시 등록 및 수신 확인 이후 로그아웃
      • 1번 기기에서 B 계정으로 로그인 후 푸시 등록 및 수신 확인, A계정 푸시 발송 시도시 토큰 비활성화 에러 메시지 확인
    • 테스트 상황 2
      • 1번 기기에서 A 계정으로 로그인 후 푸시 등록 및 수신 확인
      • 2번 기기에서 A 계정으로 로그인 후 푸시 등록 및 수신 확인, 1번 기기에서 푸시 미수신

관련해서 이래저래 찾아보다가 이렇게 처리를 했습니다.
서버에 유저가 푸시를 받기를 희망하는지 bool 값을 저장하고,
켤 때 마다 bool 값을 확인해서 뒤끝서버의 pushtoken을 호출해서 토큰값을 새로 전달토록 했습니다.
이렇게 하니 문제가 좀 해결이 됐는데요.

관련해서 두 가지 문의 드립니다.

  1. 275명에게 푸시가 발송이 됐을 때, 해당 기기에서 어플리케이션에 대해 어플리케이션을 켤때 물어보는 허용 차단에서 차단을 선택해서 어플리 알림 차단 상태에 있다면, 사용량은 증가하면서 보낸 푸시는 무시가 되나요?

  2. 기존 제가 짠 코드에서는 뒤끝서버에 토큰을 보내고나면 유저가 어플 내 메뉴를 조작해서 푸쉬를 취소 또는 재 수신 처리 하기 전에는 cancel이나 put 함수를 호출하지 않았는데요. 이럴 경우, 어플리케이션을 껐다가 켯다를 반복하다보면, 어플리케이션이 꺼져 있는 상태(앱종료, 백그라운드 상황 등)에서 푸시가 전달이 안 됐습니다.
    그래서 켤 때마다 put함수를 호출하는 식으로 수정을 했는데요. 이렇게 계속 토큰을 넣으면서 쓰는게 맞을까요? 아니면 한번만 넣고, 이후 변동이 있을 때만, put이나 cancel 함수를 호출하는게 맞을까요? 일단 계속 호출을하는 전자의 형태로 코드를 수정 후에는 의도한 대로 어플리케이션을 종료 재실행을 반복하여도, 푸시가 정상적으로 도착하는 것을 확인 했습니다.

  1. 네 맞습니다. 게임 내에서는 푸시 수신에 동의하였더라도, os 자체에서 차단을 해두었다면 사용량은 발생하지만 발송된 푸시는 실제 유저에게 보여지지 않을 것입니다.
  2. 푸시 디바이스 등록은 1회 진행에 따라 푸시 발송이 이루어지게 됩니다.
    이후 재호출이 필요하지는 않으며 내부에서 여러 차례 테스트를 진행해보았으나 푸시가 전달되지 않는 특이상황은 확인하지 못하였습니다. 관련해 보다 명쾌한 답변을 드리지 못해 죄송합니다.