10. 푸시 메시지 보내기

아이펀 디플로이는 Apple 의 APNS(Apple Push Notification Service) 와 Google 의 FCM (Firebase Cloud Messaging) 을 모두 지원하는 푸시 서비스를 제공합니다.

10.1. 푸시 설정

상단 메뉴에서 푸시알림 을 선택합니다.

_images/push000.png

푸시 설정이 없는 경우 설정을 요구하는 페이지가 나타납니다. FCM 이나 APNS 모두 등록된 응용 프로그램만 푸시 알림을 보낼 수 있으므로, 이를 위해서 설정을 해주셔야 합니다.

here 링크 또는 설정 버튼을 클릭합니다.

_images/push00.png

푸시 메시지 전송을 지원할 디바이스 타입에 따라서 Android 와 iOS 를 각각 설정합니다.

_images/push-03.png

10.1.1. Android 설정

Android 푸시는 Google 이 제공하는 FCM(Firebase Cloud Messaging) 서비스를 이용합니다.

Cloud Messaging server key 정보가 필요합니다. Firebase프로젝트 콘솔에서 ‘설정 > 클라우드 메시징’ 으로 이동하여 확인합니다.

Note

FCM server key 에 대한 것은 이 문서의 범위를 넘어서니 Firebase 관련 문서 를 참고해 주세요.

  1. Android 활성화 스위치를 켭니다.
  2. ‘FCM 키’ 부분에 Cloud Messaging server key 정보를 입력합니다.
  3. ‘클라이언트 디바이스 토큰 등록’ 란에서 ‘auth token’ 및 ‘Android URL’ 정보를 확인합니다. 클라이언트에서 디바이스 토큰을 아이펀 디플로이 에 등록하기 위해 사용합니다. ‘auth token’ 등록 요청 인증 용도이고, ‘Android URL’ 은 요청을 보낼 서버 주소입니다.
  4. ‘변경사항 저장’ 버튼을 클릭합니다.

10.1.2. iOS 설정

iOS 푸시는 Apple 이 제공하는 APNS(Apple Push Notification Service) 서비스를 이용합니다.

Apple Push Notification SSL certificate 이 필요합니다. AppleDeveloper 사이트에서 생성 및 조회하실 수 있습니다.

Note

Apple Push Notification SSL certificate 에 대한 것은 이 문서의 범위를 넘어서니 Apple 개발자 문서를 참고해 주세요.

  1. iOS 활성화 스위치를 켭니다.
  2. ‘인증서’ 부분에 인증서 정보를 입력합니다.
  3. ‘클라이언트 디바이스 토큰 등록’ 부분에서 ‘auth token’ 및 ‘iOS URL’ 정보를 확인합니다. 클라이언트에서 디바이스 토큰을 아이펀 디플로이 에 등록하기 위해 사용합니다. ‘auth token’ 등록 요청 인증 용도이고, ‘iOS URL’ 은 요청을 보낼 서버 주소입니다.
  4. ‘변경사항 저장’ 버튼을 클릭합니다.

10.2. 모바일 디바이스 연동

아이펀 디플로이 가 푸시 메시지를 모바일 디바이스로 전송하려면, 디바이스 토큰이 필요합니다.

모바일 디바이스에서 플랫폼 SDK 를 통해 얻을 수 있습니다.

생성한 토큰은 HTTP 클라이언트 라이브러리를 이용해 아이펀 디플로이 로 전송합니다. 푸시 대상 선택시 필요한 ‘account_id’ 정보도 포함합니다.

아이펀 디플로이 는 디바이스 토큰과 ‘account_id’ 쌍을 저장합니다. 아이펀 디플로이 가 푸시를 클라이언트로 전송 시 저장해 두었던 디바이스 토큰을 사용합니다.

일부 사용자를 선택해서 전송하는 경우 ‘account_id’ 목록을 사용자로부터 입력받아, 그에 해당하는 디바이스 토큰을 이용해 전송합니다.

전송 대상 선택 시 디바이스 토큰 대신 account_id 를 사용하는 이유는 다음과 같습니다.

  • 같은 사용자가 디바이스 변경 시 디바이스 토큰이 달라진다.
  • 같은 디바이스 사용 시에도 디바이스 토큰은 갱신될 수 있다.
  • 디바이스 토큰은 타겟 지정용으로 사용하기에는 가독성이 떨어진다.

디바이스 타입에 따라 디바이스 토큰 생성 방식은 다르고, 형태도 다릅니다. 일반적으로 플랫폼 SDK는 디바이스 토큰 관리 API 를 포함합니다.

  1. 플랫폼 SDK 를 이용해서 디바이스 토큰을 생성하거나 조회합니다.

  2. 플랫폼에서 제공하는 HTTP 클라이언트 라이브러리 등을 활용해 아래와 같은 HTTP 요청을 보내서 아이펀 디플로이 에 디바이스 토큰 및 account_id 를 등록합니다.

    Important

    동일한 디바이스에서도 디바이스 토큰은 수시로 변경될 수도 있습니다. 일정 주기로 디바이스 토큰 변경을 감지하여 재전송하도록 구현하는 것을 권장합니다. 이미 등록되어 있는 account_id 에 대한 디바이스 토큰 등록을 요청하면, 새로운 토큰으로 갱신합니다.

    플랫폼 SDK 문서에는 디바이스 토큰 관리에 대한 내용을 포함하고 있으니 참고해 주세요.

    URL

    푸시 설정 페이지에서 확인 가능한 디바이스 별 URL

    Header
    • Auth-Token (필수): 푸시 설정 페이지에서 확인 가능한 ‘auth token’. 등록 요청을 인증하는데 사용한다.
    Body
    {
      "token": "<생성한 디바이스 토큰>",
      "account_id": "<고유 사용자 계정 ID>",
      "options": {
        "ios": {
          "env_type": "<동작 모드>"
        }
      }
    }
    
    • token (필수): 플랫폼 SDK 를 이용해 가져온 디바이스 토큰.

    • account_id (필수): 아이펀 디플로이 가 디바이스 사용자를 식별하기 위한 ID 문자열 타입이고 사용자마다 유일한 ID 면 어떤 형태든 가능합니다. (e.g. UUID). 최대 허용 크기는 255 bytes.

    • options (iOS 인 경우 필수): 디바이스 타입 별 옵션을 지정합니다.

      Android

      지원 옵션 없음

      iOS
      • env_type (필수): development 또는 production. 등록하려는 디바이스 토큰 용도.
  3. 요청에 대한 HTTP 응답 상태 코드가 No content(204) 인지 확인합니다. 상태 코드가 4xx 에러 코드면 요청 시 URL, header, body 가 정확한지 확인합니다.

Note

각 디바이스에서 플랫폼 SDK(Android, iOS) 를 이용해 디바이스 토큰을 생성 및 관리하는 방법은 이 문서의 범위를 넘어섭니다. 각 플랫폼 제공자 가이드를 참조해 주세요.

Note

각 디바이스에서 아이펀 디플로이 로 HTTP 요청을 생성하는 방법(HTTP 클라이언트 API 사용법)은 이 문서의 범위를 넘어섭니다. 각 플랫폼 제공자 API 문서를 참조해 주세요.

10.3. 푸시 전송

_images/push01.png

푸시 알림 페이지 내 + 알림 버튼을 클릭하여, 새로운 푸시 메시지를 작성 및 전송합니다.

_images/push02.png
  1. 설명
  • 푸시 메시지에 대한 주석입니다.
  • 해당 푸시의 목적이나 의도 등을 나중에 쉽게 확인할 수 있도록 기록하실 수 있습니다.
  1. 발송 시점
  • 푸시 알림을 보낼 시점을 설정합니다.
    • 즉시 전송 : 푸시 메시지를 작성하는 즉시 알림을 발송합니다.
    • 예약 전송 : 캘린더에서 선택한 날짜 시간에 맞추어 알림 발송을 예약합니다.

Note

‘설명’ 부분에 입력한 내용은 실제 푸시 메시지에는 포함되지 않습니다. 푸시 메시지에 포함될 내용은 ‘메시지’ 부분에 입력해 주세요.

  1. 반복 설정
  • 푸시 반복 발송을 설정합니다.

    • 반복 없음 : 푸시를 반복하지 않고, 1회 발송합니다.
    • 반복 있음 : 푸시를 특정 조건으로 여러 번 반복하여 발송 합니다.
  • 푸시 반복 발송 설정은 다음과 같습니다.

    _images/push03.png
    1. 반복 있음 을 클릭합니다. 반복 있음 클릭 시, 세부 설정 영역이 표시됩니다.
    _images/push04.png
    1. 반복 종료일 을 설정합니다. 반복 종료일 은 푸시 발송이 종료되는 날짜 및 시간을 의미합니다.
    _images/push05.png
    1. 반복 세부 설정 을 진행합니다. 반복 세부 설정 은 매일 혹은 특정 요일마다 반복을 설정할 수 있습니다.
    • 예를 들어, 기간 내 금요일~일요일 만 반복하여 푸시를 발송하고 싶은 경우, 특정 요일마다 반복 발송 을 선택 후, 금요일, 토요일 그리고 일요일을 선택하면 됩니다.
  1. 대상 유저
  • ‘모든 유저’ 를 선택하면 등록되어 있는 모든 디바이스에 푸시를 전송합니다
  • 선택 해제하면 ‘대상 유저 ID’ 를 입력하실 수 있습니다. 디바이스 토큰 등록 요청에 포함되어 있는 ‘account_id’ 목록을 한 줄에 하나씩 입력합니다.
  1. 대상 OS
  • 푸시를 전송할 모바일 디바이스 타입을 지정합니다. Android, iOS 각각 지정할 수 있습니다.
  • iOS 를 선택한 경우 ‘개발’, ‘프로덕션’도 선택해야 합니다. 토큰 등록시 options.ios.env_type 에 지정한 모드로 등록한 디바이스에만 전송합니다.
    • ‘개발’ 을 선택한 경우: development 로 등록한 디바이스로 전송.
    • ‘프로덕션’ 을 선택한 경우: production 으로 등록한 디바이스로 전송.
  • 푸시 설정 에서 설정하지 않은 OS 는 선택이 불가능합니다. 선택할 수 있게 하려면 푸시 설정 항목을 참조해 푸시 설정을 완료해 주세요.

Note

Android, iOS 모두를 선택한 경우, 메시지는 제목, 본문만 지정할 수 있습니다. 플랫폼 의존적인 옵션을 사용하려면 특정 대상 OS 한 가지만 지정해야 합니다.

  1. 메시지
  • 디바이스로 전송할 푸시 메시지 내용입니다.
  • 간단하게 제목, 메시지만 전송하실 수도 있고, 특정 플랫폼에서 지원하는 다양한 파라미터를 ‘Raw JSON’ 항목을 통해서 입력하실 수도 있습니다.
    • ‘Raw JSON’ 항목은 ‘대상 OS’ 를 하나만 지정한 경우에만 선택할 수 있습니다.
    • ‘대상 OS’ 를 2 개 이상 선택한 경우에는, 각 OS 마다 푸시 메시지 형식이 다르기 때문에 JSON 형식으로 푸시 메시지를 생성할 수 없습니다.
    • JSON 형태로 메시지를 지정하려면 대상 OS 를 한 가지만 선택해 주세요.

Caution

Android 에 Raw JSON 으로 푸시를 보내는 경우 JSON 내부에 포함한 대상 디바이스 토큰 목록은 무시합니다. ‘대상 유저’ 에서 선택한 ‘모든 유저’ 또는 ‘대상 유저 ID’ 목록을 전송 대상으로 사용합니다.

Note

각 플랫폼 푸시 메시지의 JSON 포맷은 이 문서의 범위를 넘어섭니다. 각 플랫폼(FCM, APNS)의 푸시 관련 문서를 참고해 주세요.

  1. 취소하기
  • 취소하기 버튼 클릭 시, 푸시 발송 설정을 중단하고 다시 푸시 알림 페이지로 이동합니다.
  1. 푸시 알림 보내기
  • 푸시 알림 보내기 버튼 클릭 시, 설정 및 입력한 내용대로, 푸시 발송이 저장 및 전송됩니다.

Danger

즉시 전송 을 설정한 경우, ‘푸시 알림 보내기’ 버튼을 클릭하는 순간, 푸시 메시지 전송을 즉시 시작합니다. 즉시 전송 은 취소가 불가능하니 신중하게 결정해 주세요.

10.4. 푸시 전송 상태 확인

10.4.1. 전송한 푸시 알림 목록

‘푸시 알림’ 페이지에서 지금까지 전송한 푸시 알림 목록을 표시합니다.

_images/push06.png

테이블 각 열의 의미는 다음과 같습니다.

  1. 등록 일시
  • 푸시 전송 요청이 만들어진 시각입니다.

Note

대시 보드에서 푸시 전송 요청을 하면, 아이펀 디플로이 는 요청이 생성된 순차적으로 푸시 발송을 시작합니다. 푸시 수신 대상 디바이스가 많은 경우, 전송 요청이 만들어진 시점과 실제 디바이스에 푸시가 전송된 시점 사이에 시차가 발생합니다.

  1. 발송 시점
  • 등록한 푸시 알림이 발송되는 시점입니다.
    • 즉시 전송 : 등록한 즉시 전송된 푸시 알림입니다.
    • 예약 전송 : 등록할 때 정한 시간에 예약 전송한 또는 전송할 예정인 푸시 알림입니다.
  1. 예약 일시
  • 발송 시점이 예약 전송 인 경우, 등록 시 지정한 예약 일시가 표시됩니다.
  • 예약 전송 시 반복 발송 설정이 되어있는 경우, 반복 있음 이 표시됩니다.
  1. 설명
  • 푸시 알림 생성 시 입력했던 설명입니다.
  • 디바이스가 수신하는 푸시 메시지 내용과는 무관합니다.
  1. OS
  • 대상 OS 목록입니다.
  • 푸시 전송 시 선택했던 대상 OS 및 iOS 의 경우 프로덕션용인지 개발용인지도 표시합니다.
  1. 상태
  • 푸시 전송 상태를 표시합니다.
    • PENDING : 전송 작업 시작을 기다리는 중입니다.
    • SENDING : 전송 작업 중입니다.
    • CANCELED : 전송 작업이 취소되었습니다.
    • DONE : 전송 작업이 끝났습니다.
  1. 액션
  • 푸시 항목에 대한 추가 작업을 진행할 수 있습니다.
    • 취소 : 클릭 시, 푸시 항목에 대해 취소 설정을 진행할 수 있습니다.
    • 상세사항 : 클릭 시, 개발 푸시 전송 요청에 대한 보다 자세한 사항을 보여줍니다.

Caution

푸시 취소 는 푸시 상태에 따라 진행할 수 있습니다. 푸시 상태가 PENDING 일 때만 취소 버튼이 활성화 되어, 푸시 취소를 설정할 수 있습니다.

10.4.2. 푸시 취소하기

푸시 상태가 PENDING 인 경우, 푸시 취소 를 진행할 수 있습니다.

취소 버튼을 클릭하면, 다음과 같은 푸시 취소 확인창 이 팝업됩니다.

_images/push07.png
  1. 알림
  • 푸시에 대한 기본 정보가 표시됩니다.
    • 등록 일시 : 푸시 알림을 등록한 시간입니다.
    • 발송 시점 : 푸시 알림을 전송하는 시점입니다.
      • 즉시 전송 : 등록된 즉시 발송된 푸시 알림을 나타냅니다.
      • 예약 전송 : 예약해서 발송한 푸시 알림을 나타냅니다.
    • 예약 일시 : 예약 전송 시 지정한 예약 일시입니다.
    • 반복 설정 : 푸시 반복 발송 관련 설정을 나타냅니다.
      • 반복 없음 : 반복 없이 예약 일시에 1회만 발송됨을 나타냅니다.
      • 반복 있음 : 반복 종료일까지 반복 요일마다 발송됨을 나타냅니다.
  1. 대상
  • 대상 유저 : 푸시 알림 대상이 전체 유저인지 일부 유저인지 표시합니다. 일부 유저인 경우 해당 유저 ID 목록을 보여줍니다.
  • 대상 OS : 푸시 알림 대상 OS 를 표시합니다.
  1. 메시지
  • 푸시 등록 시 입력한 제목과 메시지를 표시합니다.
  1. 닫기
  • 푸시를 취소하지 않고, 해당 창을 닫습니다.
  1. 푸시 취소
  • 설정했던 해당 푸시를 취소합니다.
  • 푸시 취소 버튼을 클릭 시, 푸시 취소 처리 작업이 진행되며 푸시 알림 페이지로 돌아갑니다.
_images/push08.png
  • 푸시 취소를 진행한 푸시 항목의 상태가 CANCELED 로 표시됩니다.
_images/push09.png
  • 취소된 푸시의 상세사항 버튼을 클릭하면, 알림 상세 창이 팝업됩니다.
    • 알림 내역 영역에 푸시 취소 일시 가 표시됩니다.
    • 상태 영역에 아직 전송 작업이 진행되지 않은 푸시 스케줄이 모두 CANCELED 로 표시됩니다.

Caution

취소된 푸시는 다시 되돌릴 수 없습니다. 푸시 취소 는 신중하게 결정하세요.

10.4.3. 전송한 푸시 알림 상세사항

푸시 알림 목록의 상세사항 (!) 버튼을 클릭하시면, 각 푸시 알림의 상세 사항을 확인하실 수 있습니다.

_images/push10.png
  1. 알림
  • 푸시에 대한 기본 정보가 표시됩니다.
    • 등록 일시 : 푸시 알림을 등록한 시간입니다.
    • 발송 시점 : 푸시 알림을 전송하는 시점입니다.
      • 즉시 전송 : 등록된 즉시 발송된 푸시 알림을 나타냅니다.
      • 예약 전송 : 예약해서 발송한 푸시 알림을 나타냅니다.
    • 예약 일시 : 예약 전송 시 지정한 예약 일시입니다.
    • 반복 설정 : 푸시 반복 발송 관련 설정을 나타냅니다.
      • 반복 없음 : 반복 없이 예약 일시에 1회만 발송됨을 나타냅니다.
      • 반복 있음 : 반복 종료일까지 반복 요일마다 발송됨을 나타냅니다.
    • 반복 설정이 된 푸시에 대한 상세 스케줄은 하단 상태 영역에서 확인할 수 있습니다.
  1. 대상
  • 대상 유저 : 푸시 알림 대상이 전체 유저인지 일부 유저인지 표시합니다. 일부 유저인 경우 해당 유저 ID 목록을 보여줍니다.
  • 대상 OS : 푸시 알림 대상 OS 를 표시합니다.
  1. 메시지
  • 푸시 등록 시 입력한 제목과 메시지를 표시합니다.
  1. 상태
  • 푸시 알림 작업의 현재 상태를 표시합니다.
  • 반복 푸시인 경우, 전송 작업 될 모든 스케줄을 표시합니다.
    • 푸시 상태
      • PENDING : 전송 작업 시작을 기다리는 중입니다.
      • PROGRESS : 전송 작업 중입니다.
      • SUCCESS : 전송 작업이 성공적으로 끝났습니다.
      • FAILURE : 전송 작업에 실패하였습니다.
    • 대상 계정 수 : 푸시 알림 대상 계정 수를 표시합니다.
    • 유효하지 않은 계정 수 : 푸시 전송 대상 ‘account_id’ 목록 중 유효하지 않은 계정 수입니다.
    • 전체 (성공/실패) : 디바이스로 전송한 푸시 알림의 전체 성공 건수 및 실패 건수입니다.
    • 안드로이드 (전체/성공/실패) : Android 디바이스로 전송한 푸시 알림 전체/성공/실패 건수입니다.
    • iOS (전체/성공/실패) : iOS 디바이스로 전송한 푸시 알림 전체/성공/실패 건수입니다.