푸시 알림은 어떻게 내 폰까지 올까? 푸시 토큰,전송 흐름
앱을 켜지도 않았는데 주문하신 상품이 배송됐다는 알림이 화면에 뜹니다. 수많은 사람 중 정확히 내 폰에만, 그것도 앱이 꺼져 있을 때도 어떻게 도착하는 것일까요. 한편 알림을 꺼 두면 똑같은 앱인데 조용하기도 합니다.
이번 글에서는 푸시 알림이 어떻게 내 폰까지 도착하는지, 그 전송 흐름을 코드 없이 풀어 보겠습니다.
앱이 내 폰에 직접 보내는 게 아닙니다 #
먼저 흔한 오해부터 풀겠습니다. 알림은 서비스가 내 폰으로 곧장 쏘는 것이 아닙니다. 서비스는 내 폰이 지금 켜져 있는지, 인터넷에 연결돼 있는지, 어디 있는지조차 알지 못합니다. 폰의 주소를 직접 들고 있지도 않습니다.
그래서 알림은 중간에 다리를 한 번 거칩니다. 아이폰은 애플, 안드로이드는 구글이 운영하는 푸시 서버가 그 다리입니다. 폰은 평소 이 푸시 서버와 가느다란 연결을 유지하고 있고, 알림은 늘 이 서버를 통해 폰에 전달됩니다.
푸시 토큰은 내 폰의 주소입니다 #
그러면 그 많은 폰 중에 어떻게 내 폰을 골라낼까요. 여기서 푸시 토큰이 나옵니다. 앱을 설치하고 알림을 허용하면, 폰은 이 폰의 이 앱을 가리키는 고유한 토큰을 발급받습니다. 일종의 배송지 주소인 셈입니다.
앱은 이 토큰을 서비스의 서버에 보내 저장해 둡니다. 나중에 알림을 보낼 때 서비스는 이 토큰으로 이 메시지를 전해 달라고 푸시 서버에 부탁하고, 푸시 서버가 그 토큰에 해당하는 폰을 찾아 알림을 내려보냅니다. 토큰이 정확한 주소 역할을 하기 때문에, 알림이 엉뚱한 사람에게 가지 않습니다.
알림이 오는 전체 흐름 #
이제 전체 흐름을 이어 보겠습니다. 서비스가 알림을 보내기로 하면, 저장해 둔 토큰을 지정해 애플이나 구글의 푸시 서버에 요청을 보냅니다. 앞서 다룬 API가 바로 이 요청을 주고받는 통로입니다. 푸시 서버는 그 토큰에 해당하는 폰을 찾아 알림을 전달하고, 폰은 받은 내용을 화면에 띄웁니다.
이 모든 과정이 보통 몇 초 안에 끝납니다. 앱이 꺼져 있어도 알림이 오는 것은, 앱이 아니라 폰과 푸시 서버 사이의 연결이 알림을 받아 주기 때문입니다.
권한과 토큰은 바뀔 수 있습니다 #
알림이 안 오는 데에는 이유가 있습니다. 사용자가 알림 권한을 처음부터 거부했거나 나중에 끈 경우입니다. 권한이 없으면 토큰 자체가 발급되지 않거나, 발급됐어도 전달이 막힙니다.
토큰도 영원하지 않습니다. 앱을 지웠다 다시 설치하거나, 시스템 사정으로 토큰이 새로 발급되면 옛 토큰은 무효가 됩니다. 서비스가 무효가 된 옛 토큰으로 계속 보내면 알림은 도착하지 못합니다. 그래서 잘 만든 서비스는 토큰을 꾸준히 갱신하고, 더 이상 쓸 수 없는 토큰은 정리합니다.
그래서 푸시를 쓸 때 #
푸시 알림을 기획할 때는 몇 가지를 함께 봐야 합니다. 먼저 권한을 언제, 왜 요청할지입니다. 앱을 켜자마자 곧바로 허용을 물으면 거부당하기 쉽습니다. 알림이 왜 도움이 되는지 사용자가 납득한 뒤에 묻는 편이 좋습니다.
알림의 양도 중요합니다. 광고성 알림을 너무 자주 보내면 사용자는 알림을 꺼 버리거나 앱을 지웁니다. 한번 꺼진 권한은 되돌리기 어렵습니다. 그래서 정말 중요한 알림은, 푸시 하나에만 기대지 않고 이메일 같은 다른 경로도 함께 두는 편이 안전합니다.
왜 비개발자가 알면 일이 편해지는가 #
- 안 오는 이유를 압니다. 알림이 일부 사용자에게만 안 갈 때, 권한이나 토큰 문제일 수 있음을 알고 점검 방향을 잡을 수 있습니다.
- 권한 요청을 설계합니다. 권한을 한번 거부당하면 되돌리기 어렵다는 점을 알면, 언제 어떻게 물을지 신중하게 정할 수 있습니다.
- 알림 정책을 세웁니다. 과한 알림이 차단과 삭제를 부른다는 점을 알면, 보낼 알림과 아낄 알림을 가려 신뢰를 지킬 수 있습니다.
마무리 #
오늘은 푸시 알림이 앱에서 직접 오는 것이 아니라 애플과 구글의 푸시 서버를 거쳐 오고, 푸시 토큰이 내 폰을 가리키는 주소 역할을 하며, 권한과 토큰의 상태에 따라 도착 여부가 갈린다는 점을 살펴봤습니다. 서비스가 폰에 직접 닿지 못해 중개자를 거친다는 점이 핵심입니다.
알림이 앱과 어떻게 얽히는지 궁금하다면 앱 vs 웹 — 네이티브,하이브리드,앱스토어 심사를, 서비스가 푸시 서버에 요청을 보내는 통로인 API가 궁금하다면 API란 무엇인가를 함께 읽어 보시길 권합니다.