Notification > Push > Console Guide

인증서 관리

Firebase 클라우드 메시징(FCM) API Key 가져오기

  1. Google Firebase Console에 접속합니다.
  2. Add Project를 클릭합니다.
  3. 프로젝트 이름과 정보를 입력하고 Create Project를 클릭합니다.
  4. 프로젝트 첫 페이지 왼쪽 위에서 톱니바퀴 아이콘을 클릭합니다.
  5. Project settings를 클릭합니다.
  6. Settings 페이지에서 Cloud Messaging 탭을 클릭합니다.
  7. Server key(API Key)와 Sender ID를 확인합니다.

FCM API Key 등록

  1. TOAST 콘솔에서 Notification > Push > 인증서를 클릭합니다.
  2. 위에서 생성한 FCM API Key를 복사해서 GCM API Key에 붙여넣고 등록 버튼을 클릭합니다.

Google Project 사용 시 주의 사항

  • Google은 2019년 4월 11일에 GCM 서비스를 종료할 계획입니다.
  • Google Project(현재 Google Cloud Platform)에서 생성한 키를 GCM API Key로 사용하고 있는 경우, 사용이 불가능할 수도 있습니다.
    만약 Google Project에서 생성한 키를 사용하지 못하게 되면, Google Project를 Firebase로 옮기고, Firebase에서 생성된 서버 키를 사용해야 합니다.

GCM에서 FCM으로 옮기는 자세한 방법은 Firebase Migration Guide를 참고하시기 바랍니다.

Google Project에서 Firebase로 옮기기

  1. Google Firebase Console에 접속합니다.
  2. CREATE NEW PROJECT를 클릭합니다.
  3. 사용하고 있는 Google Project가 있다면, Project Name 항목에 사용 중인 Google Project 목록이 표시됩니다. 옮기려는 Google Project를 선택합니다.
  4. 프로젝트 아이디가 기존 Google Project와 같게 설정됩니다.
  5. 프로젝트 첫 페이지에서 톱니바퀴(gear) 아이콘을 클릭합니다.
  6. Project settings를 클릭합니다.
  7. Settings 페이지에서 CLOUD MESSAGING 탭을 클릭합니다.
  8. Server key(API Key)와 Sender ID를 확인합니다.
  9. Firebase에서 확인한 Server key를 인증서 탭에 GCM API Key에 붙여 넣습니다.

APNS 인증서 생성, 가져오기

  1. Mac에서 키체인을 실행합니다.
  2. 체인 접근 > 인증서 지원 > 인증 기관에서 인증서 요청 버튼을 클릭합니다.
  3. 사용자 이메일 주소에 Apple Developer ID 등 필요한 정보를 입력합니다. 디스크 지정됨을 선택하고, 본인이 키 쌍 정보 저장을 선택한 후 계속을 클릭합니다.
  4. 키 쌍 정보에서 키 크기, 알고리즘 선택 후 계속을 클릭합니다. CSR(Certificate Signing Request) 파일이 생성됩니다.
  5. Apple Developer Certificates로 이동합니다.
  6. 오른쪽 상단에서 +(Add) 버튼을 클릭해 Certificate 발급 페이지로 이동합니다.
  7. Select Type > Request > Generate 탭에서 키체인을 통해서 만든 CSR 파일을 업로드합니다. Generate 버튼을 클릭합니다.
  8. 인증서를 생성하고 다운로드할 수 있습니다. 만약 승인 권한이 없다면 승인을 받고 다운로드할 수 있습니다.
  9. 인증서를 다운로드한 후, 키체인 > 인증서에서 인증서를 선택합니다.
  10. 인증서에서 마우스 오른쪽 버튼을 클릭하고 보내기를 클릭합니다.
  11. 저장 위치를 설정하고 저장을 클릭합니다(파일 형식: .p12).
  12. 보낸 항목을 보호하는 데 사용할 암호를 입력하면 APNS 인증서 생성이 완료됩니다.

APNS 인증서 등록

  1. 콘솔에서 Notification > Push > 인증서를 클릭합니다.
  2. APNS 인증서 아래 인증서에서 파일 선택을 클릭합니다.
  3. 비밀번호에 인증서 비밀번호를 입력합니다.
  4. 등록을 클릭합니다.

APNS 주의 사항

APNS(Production), APNS_SANDBOX(Development) 차이

  • Production Provisioning Profile로 빌드한 앱은 APNS(Production)를 이용해야 하며, Development Provisioning Profile로 빌드한 앱은 APNS_SANDBOX(Development)를 이용해야 합니다. 이를 지키지 않으면, 푸시 메시지를 정상적으로 수신할 수 없습니다.
  • Push에 등록한 APNS 인증서와 앱을 빌드할 때 사용한 Provisioning Profile이 달라 메시지 발송에 실패한 경우가 대부분입니다.
    APNS(Production) = Production Provisioning Profile
    APNS_SANDBOX(Development) = Development Provisioning Profile
  • 더 자세한 설명은 다음 링크를 참고하시기 바랍니다.
    APNs Overview
    App Distribution Quick Start

APNS 메시지 발송 실패 원인

  • 인증서가 만료되었을 때
  • 잘못된 인증서를 등록했을 때
  • 앱에서 푸시 메시지 수신을 거부했을 때
  • 디바이스가 인터넷에 연결되어 있지 않을 때

Tencent 회원 가입

  1. Tencent 푸시 서비스 홈페이지에 접속합니다.
  2. 페이지 오른쪽 상단에서 登录(로그인)을 클릭합니다.
  3. 팝업 오른쪽 하단에서 注册新帐号(회원 가입)을 클릭합니다.
  4. Email Account 항목에서 Email Account, Nickname, Password, Verification Code 등을 빠짐없이 입력하고 Sign up now를 클릭합니다.
  5. Send verification code 아래에 select your country/region을 클릭합니다.
  6. region에서 South Korea 0082를 선택하고, Mobile Number에 010AAAABBBB 형식으로 번호를 입력합니다.
  7. 인증 코드를 입력하고 다음 단계로 넘어갑니다.
  8. 가입 시 입력한 Email에서 Activation Email을 확인하고, 활성화합니다.

Tencent 애플리케이션 등록

  1. 로그인 후, Tencent 푸시 서비스 대시보드에 접속합니다.
  2. 페이지 오른쪽 상단에서 接入推送应用(애플리케이션 등록)을 클릭합니다.
  3. 应用名称(애플리케이션 이름)을 입력합니다.
  4. 所属分类(카테고리)를 선택합니다.
  5. 应用平台(애플리케이션 플랫폼)에서 안드로이드를 선택하고, 패키지 네임을 입력합니다.
  6. 接入应用(애플리케이션 생성)을 클릭합니다.

Tencent ACCESS ID, SECRET KEY 등록

  1. 로그인한 후, Tencent 푸시 서비스 대시보드에 접속합니다.
  2. 应用统计(통계)를 클릭해서, 애플리케이션 대시보드에 접속합니다.
  3. 왼쪽 메뉴 중 配置管理(설정) > 应用配置(애플리케이션 설정)을 클릭합니다. ACCESS ID, ACCESS KEY, SECRET KEY를 확인합니다.
  4. TOAST로 돌아와 콘솔에서 Notification > Push > 인증서를 클릭합니다.
  5. 확인한 Tencent Credential에 ACCESS ID, SECRET KEY를 입력합니다.

ADM 애플리케이션 및 프로파일 등록(Client Id, Client Secret 획득)

  1. ADM 개발자 콘솔에 접속합니다.
  2. 페이지 왼쪽 상단에서 APP & SERVICES를 클릭한 후, 하단에 ADD a New App 버튼을 클릭합니다.
  3. 앱이 생성되면 중간 탭에 있는 Device Messaging을 클릭하고 Create a New Security Profile 버튼을 클릭합니다.
  4. 프로필 생성 완료 후, 중간 탭에 있는 Security Profiles을 클릭하고 View Security Profile 버튼을 클릭합니다.
  5. General 탭에서 Client ID와 Client Secret 값을 확인할 수 있습니다.

ADM Kindle 설정 정보 등록(API key 획득)

  1. Security Profiles 탭을 클릭한 후 중간에 있는 Android/Kindle Setting 탭을 클릭합니다.
  2. App Key Name, Package, MD5 Signature, SHA256 Signature 정보를 입력합니다.
  3. 아래와 같은 명령어로 MD5, SHA256 정보를 조회할 수 있습니다.
> keytool -list -v -keystore {keystoreFileName}

키 저장소 비밀번호 입력:
키 저장소 유형: JKS
키 저장소 제공자: SUN

키 저장소에 1개의 항목이 포함되어 있습니다.

별칭 이름: androiddebugkey
생성 날짜: 2018. 5. 9
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: C=US, O=Android, CN=Android Debug
발행자: C=US, O=Android, CN=Android Debug
일련 번호: 1
적합한 시작 날짜: Wed May 09 19:59:46 KST 2018 종료 날짜: Fri May 01 19:59:46 KST 2048
인증서 지문:
         MD5:  xxxx
         SHA1: xxxx
         SHA256: xxxx
서명 알고리즘 이름: SHA1withRSA
주체 공용 키 알고리즘: 1024비트 RSA 키
버전: 1
  • 등록 완료 후 Show 버튼을 클릭하면 API key 정보를 조회할 수 있습니다.

즉시 전송

인증서와 토큰을 정상적으로 등록한 후, 콘솔에서 Notification > Push > 메시지를 클릭하고 추가 버튼을 클릭합니다. 양식을 작성해 메시지를 즉시 전송할 수 있습니다.

즉시 전송 양식 구성은 다음과 같습니다.

이름 내용
대상 수신 대상을 설정할 수 있습니다.
대상 유형 ALL, UID, TAG 중에서 하나를 선택할 수 있습니다.
대상 > To UID를 입력할 수 있습니다. Target > Type에서 UID를 선택해 UID로 전환할 수 있습니다. 쉼표(',')를 구분자로 여러 개를 입력할 수 있습니다.
대상 > UIDs 쉼표(',')를 구분자로 여러 개를 입력할 수 있습니다.
대상 > 태그 선택 버튼을 클릭해 태그를 선택할 수 있습니다.
대상 > 선택된 태그 선택된 태그가 표시됩니다. 다시 클릭해 선택에서 제외할 수 있습니다.
대상 > 국가 코드 국가 코드를 입력할 수 있습니다. 쉼표(',')를 구분자로 여러 개를 입력할 수 있습니다.
대상 > 푸시 유형 GCM, APNS, APNS Sandbox, Tencent 복수로 선택할 수 있습니다.
옵션 > TTL(Time To Live) 메시지 발송 유효 시간입니다. 설정한 시간 동안 발송이 지연되는 경우, 자동으로 실패 처리됩니다. 단위는 분입니다. 0이면 발송 지연으로 실패 처리되지 않습니다.
메시지 > 편집기 유형 SIMPLE, JSON 두 가지 유형이 있습니다. JSON을 선택하면 직접 메시지를 작성할 수 있습니다.
메시지 > 메시지 유형 NOTIFICATION, AD 두 가지 유형이 있습니다. AD 경우, 광고성 푸시 메시지 수신에 동의한 사용자에게만 메시지가 발송됩니다.

리치 메시지 작성

푸시 메시지에 버튼, 이미지 등을 넣어 다양한 형태로 푸시 메시지를 발송할 수 있습니다. v1.7이상 SDK가 적용된 곳에서만 사용할 수 있는 기능입니다.

버튼

이름 내용
버튼 메시지에 버튼을 추가합니다.
버튼 > 이름 버튼의 이름
버튼 > 전송 버튼 이름 버튼 유형이 응답 버튼이면 iOS에서 전송 버튼 이름을 설정할 수 있습니다.
버튼 > 타입 버튼의 유형, 응답(REPLY), 앱 열기(OPEN_APP), URL 열기(OPEN_URL), 닫기(DISMISS)
버튼 > 링크 버튼을 눌렀을때 이동하거나 실행할 링크입니다. 버튼 유형이 URL 열기이면 해당됩니다.
버튼 > 힌트 버튼에대한 설명이다.

미디어

이름 내용
위치 미디어의 위치한 곳, 'REMOTE' 또는 'LOCAL'
주소 미디어가 위치한 주소, URL, URI 등이 될수 있습니다.
유형 이미지, GIF, 동영상, 소리를 선택할 수 있다. (Android는 이미지만 가능)
확장자 미디어의 확장자
펼치기 미디어 펼짐 기능, Android에서만 가능합니다.

큰 아이콘

Android에서만 제공하는 기능입니다.

이름 내용
위치 위치한 곳, 'REMOTE' 또는 'LOCAL'
주소 이미지가 위치한 주소, URL, URI 등이 될수 있습니다.

그룹

Android에서만 제공하는 기능입니다.

이름 내용
그룹의 키
설명 그룹에대한 설명

예약 전송

콘솔에서 Notification > Push > 예약을 클릭합니다. 추가, 수정, 삭제 버튼을 클릭해 예약 전송을 관리할 수 있습니다.

예약 전송 양식은 다음과 같이 구성돼 있습니다.

이름 내용
일정 EVERY_DAY: StartDate, EndDate 사이 매일 지정된 시간에 메시지를 보냅니다.
EVERY_WEEK: Reservation Condition에 요일을 지정해 매주 저정한 요일에 메시지를 보냅니다.
EVERY_MONTH: Reservation Condition에 날짜를 지정해 매달 지정한 날짜에 메시지를 보냅니다.
요일 요일을 선택할 수 있습니다.
쉼표(',')를 구분자로 날짜(월)를 입력할 수 있습니다.
예약 시간 메시지를 전송할 시간을 입력합니다. 시간 형식은 'HH:mm'입니다.
시작일 메시지를 전송할 시작 날짜를 입력합니다. 달력에서 날짜를 선택할 수 있습니다. 형식은 'YYYY-MM-DD'입니다.
종료일 메시지를 전송하는 마지막 날짜를 입력합니다. 달력에서 날짜를 선택할 수 있습니다. 형식은 'YYYY-MM-DD'입니다.
현지 시간 true로 설정하면 현지 시간 기준으로 메시지를 전송합니다.

토큰 관리

콘솔에서 Notification > Push > 토큰을 클릭합니다. 추가, 삭제 버튼을 클릭해 토큰을 추가하거나 삭제할 수 있습니다.

토큰 검색

  • 검색 유형TOKEN으로 선택하면 나타나는 목록에서 원하는 푸시 유형을 선택하고 토큰을 검색할 수 있습니다.

UID 검색

  • 검색 유형UID로 선택하고 UID를 검색할 수 있습니다.
  • 일부만 일치되더라도 검색 결과에 나타납니다.

태그 관리

콘솔에서 Notification > Push > 태그를 클릭하고 추가, 수정, 삭제 버튼을 클릭해 태그를 관리할 수 있습니다.

태그가 붙은 UID 관리

  • 태그를 클릭하면, 태그가 붙은 UID 목록을 확인할 수 있습니다.
  • 추가, 삭제 버튼을 클릭해 UID를 추가하거나 삭제할 수 있습니다.
  • UID는 한 번에 1,000개까지 추가할 수 있습니다.

광고 표시 문구 위치 설정

[Console] > [Notification] > [Push] > [Setting] 탭 클릭, 광고 표시 문구 위치를 설정할 수 있다.

  • 광고성 메시지 발송 시 표시되는 광고 표시 문구 위치를 설정할 수 있다.
  • 제목(title)
    • 기본 설정이다.
    • 제목에 '(광고)' 표시와 연락처가 표시된다.
  • 내용(body)
    • 내용에 '(광고)', 연락처, 수신 동의 철회 방법이 표시된다.

토큰 관리 설정 기능

콘솔에서 Notification > Push > 설정을 클릭해 토큰 만료 기간과 앱 유형을 설정할 수 있습니다.

토큰 만료 기간 설정

  • 설정한 기간 동안 등록 요청이 없는 토큰들을 메시지 발송 대상에서 제외합니다.
  • 기본값은 12개월입니다.
  • 설정한 기간 동안 앱을 사용하지 않는 사용자들의 토큰이 메시지 발송 대상에서 자동으로 제외되어 발송 요금을 절약할 수 있습니다.

앱 유형 설정

  • 연동된 앱의 유형에 따라 토큰을 관리합니다.
  • 다중 토큰
    • 기본 설정입니다.
    • 앱의 사용자가 여러 기기에 설치된 앱을 동시에 사용할 수 있는 앱이며, 한 사용자는 여러 개의 토큰을 가질 수 있습니다.
    • 예를 들어 사용자가 휴대폰과 태블릿을 사용한다면, 두 개의 토큰을 가질 수 있고, 휴대폰과 태블릿, 두 곳으로 푸시 메시지를 발송합니다.
  • 단일 토큰
    • 사용자가 한 번에 한 기기에서만 앱을 사용할 수 있습니다. 한 사용자는 하나의 토큰만 가질 수 있습니다.
    • 예를 들어 사용자가 휴대폰과 태블릿을 사용한다면, 한 개의 토큰만 가질 수 있고, 둘 중 한 곳으로 푸시 메시지를 발송합니다.

메시지 수신/확인 데이터 수집

콘솔에서 Notification > Push > 설정을 클릭해 메시지 수신 및 확인 데이터 수집(Message Delivery Receipt) 기능을 활성화할 수 있습니다. 활성화된 기능 동작을 위해 SDK v1.4 이상이 적용되어야 합니다. 수집된 데이터는 통계 탭에서 확인할 수 있습니다.

통계 조회

  • 통계 탭에서 최근 30일 내 수집된 데이터를 조회할 수 있으며, 기간과 시간 단위를 설정할 수 있습니다.

메시지 발송 내역 저장

  • 메시지 발송 내역을 지정한 Log & Crash Search에 전송하는 기능입니다.
  • 콘솔에서 Notification > Push > 설정을 클릭해 로깅 (logging) 기능을 활성화할 수 있습니다.
  • Appkey에는 사용하는 Log & Crash Search의 Appkey를 입력합니다.
  • Log Source는 내역 저장 시 같이 남길 값을 입력합니다. 다른 로그와 구분하는 값입니다.
  • Log Level은 발송 내역 중 특정 내역만 남길 수 있게 합니다.
    • ALL: 발송 성공, 실패 등 모든 내역을 남깁니다.
    • INFO: 만료된 토큰 발송, 발송 실패 내역만 남깁니다. 발송 성공은 남기지 않습니다.
    • ERROR: 발송 실패에 내역만 남깁니다.
  • 연동 후 메시지 발송 내역은 콘솔에서 Analytics > Log & Crash Search > 로그 검색에서 확인할 수 있습니다.
  • 전송되는 메시지 발송 내역은 Log & Crash Search의 요금 정책을 따릅니다.

발송 내역 로그 형식

Body

{
    "tokens" : [{
            "uid" : "User Id",
            "token" : "Device Token",
            "newToken": "New Deivce Token",
            "message": "Result Message"
        }
    ],
    "payload" : {
        "priority" : "high",
        "data" : {
            "messageDeliveryReceipt" : true,
            "title" : "타이틀",
            "body" : "내용",
            "messageDeliveryReceiptData" : {
                "messageId" : 963854842757578,
                "sentDateTime" : "2017-11-06T10:41:55.619+09:00"
            }
        },
        "registration_ids" : ["토큰"]
    }
}
  • tokens: 발송된 토큰 정보
    • uid: 사용자 아이디
    • token: 토큰
    • newToken: 새로 발급된 토큰(새로운 토큰이 있을 때만 표시)
    • message: 결과 메시지(비정상 응답일 때만 표시)
  • payload: 실제 GCM이나, APNS, TENCENT로 발송된 메시지 내용(푸시 타입에 따라 내용이 다름)

Fields

  • Appkey: 메시지를 발송한 푸시 앱키
  • messageId: 메시지 아이디
  • pushType: 푸시 타입(GCM, APNS, APNS_SANDBOX, TENCENT)
  • sentResult: 발송 결과(SENT, INVALID_TOKEN, ERROR)
  • messageErrorType: 발송 실패 유형
    • CLIENT_ERROR: 클라이언트 오류로 잘못된 발송 요청으로 발송 실패
    • EXTERNAL_ERROR: 외부 오류로, 발송 시 Google이나 Apple, Tencent 서버에서 비정상 응답으로 발송 실패
    • INTERNAL_ERROR: 내부 오류로 발송 실패
  • messageErrorCause: 발송 실패 원인
    • SKIP: 잘못된 토큰이나 인증서
    • NO_TOKEN: 발송 대상이 없음
    • INVALID_TOKEN: 잘못된 토큰으로 발송 요청
    • INVALID_MESSAGE: 잘못된 메시지로 발송 요청
    • INVALID_CERTIFICATE: 인증서 만료
    • UNAUTHORIZED: 인증서 만료
    • EXPIRED_TIME_OUT: 발송 요청한 메시지가 만료
    • APNS_ERROR: APNS에서 비정상 응답
    • GCM_ERROR: GCM에서 비정상 응답
    • TENCENT_ERROR: TENCENT에서 비정상 응답
    • AGENT_ERROR: Google, Apple, Tencent 서버로 통신이 비정상
    • UNKOWN: 내부에서 알 수 없는 오류 발생

개인정보 수탁사 고지 안내

'고객'이 TOAST Push 상품을 이용할 때, '고객' - '당사' 간 개인정보 처리에 관한 업무 위수탁 관계가 발생하는 바 정보통신망법 및 개인정보보호법에 따라 위탁자인 '고객'은 개인정보처리방침을 통해 '당사'에 개인정보를 위탁한 현황(수탁자 및 업무의내용)을 공개하여야 합니다. 이에, '당사'에서는 '고객'이 TOAST Push 서비스를 이용함에 있어 관련 법령을 준수하고, 위탁 현황 미공개로 인하여 과태료 등의 불이익을 받지 않도록 아래와 같이 가이드할 수 있습니다.

[개인정보 수탁사 고지 안내] Push 서비스 이용 시 고객사에서 운영하시는 '개인정보처리방침' > 위탁 현황에 다음의 내용을 표기해주세요.

수탁사 : 엔에이치엔엔터테인먼트 업무의 내용 : 푸시 메시지 발송 대행
  • 문서 수정 내역
    • (2018.09.19) 광고 표시 문구 설명 추가
    • (2018.07.24) APNS 인증서 설명 추가
    • (2018.06.15) GCM에서 Firebase로 옮기는 설명 추가
    • (2017.11.23) 메시지 발송 내역 저장 설명 추가
    • (2017.09.21) 즉시 전송 설명 수정
    • (2017.07.20) 개인정보 수탁사 고지 안내 추가