푸시 알림(Push Notification)

푸시 알람은 위키백과 에 따르면 어떤 전송 요청이 중앙 서버에서 시작되는 정보 전달 방식 이다.

예를 들어 실시간 주식시장 정보나 뉴스기사 소식을 푸시해주는 것이 이에 해당한다.

반대되는 개념으로는 풀(pull)이 있는데, 이것은 클라이언트가 먼저 데이터를 얻기 위해 서버에 요청하여 데이터를 받는 것이다.

정보 취득을 통제하는 주체가 서버(광고주)이냐 클라이언트(사용자)이냐에 따라 푸시 풀이 나뉜다.

 

푸시를 보내는 원리

처음에는 푸시를 보내는 원리를 파악하지 못하고 단순히 어떻게 보내는지에 대해서만 파악을 했다가, 아~무리 구글링을 해도 내가 원하는 상황에 자동으로 특정 타겟에게 푸시를 보낼 방법을 모르겠어서 그 원리부터 다시 조사했다. 그 원리를 파악하자 내가 무엇이 문제였는지 바로 확인할 수 있었다.

 

image

사진은 푸시를 보내는 원리에 대해 간략히 순서도를 나타내고 있다. 하나씩 설명하자면

1. 먼저 앱을 설치하고 실행하면 이 app은 푸시알림을 보내기 위한 device token을 포함해 해당 user의 정보를 서버로 보낸다.

2. 서버에서는 받아온 데이터를 저장하고, FCM에 해당 기기에 대한 토큰을 저장한다.

3. 당근마켓에서 어떤 상품을 등록하는 것처럼 사용자의 이벤트가 발생하여 서버로 보내진다.

4. 해당 서버는 그 이벤트를 가지고 어떤 디바이스들에게 푸시 알림을 보낼지 필터링해서 FCM에 넘긴다.

5. FCM은 미리 저장해놓은 기기 토큰 중에서 요청받은 토큰이 무엇인지 판단하고 APNs를 통해 각각의 기기에 푸시 알림을 보낸다.

 

그렇다면 우리에게 필요한 것은 APN과 FCM에 계정 등록이 되어야 하고,

푸시알림을 보낼 서버가 따로 있어야 하며,

앱에서는 device token을 뽑아 서버로 넘겨야 한다는 것.

(짧지만 준비 과정은 매우 길 것이다. APN과 FCM 등록하는 것도 까다로우니까. 어떻게 알았냐구요? 저도 알고 싶지 않았습니다..)

 

APNs와 FCM이 어떻게 푸시알림을 처리하는지에 대해 좀더 자세히 알고 싶다면 다음 블로그와 사이트를 추천한다:

원리에 대해 자세히 설명한 블로그

원리에 대해 자세히 설명한 3p짜리 논문

android는 어떻게 보내는지에 대한 신문기사

Firebase->APNs로 넘기는 것에 대한 Firebase 공식 문서

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom