정의
앱을 켜 두지 않아도 새 소식이 화면 위에 뜨게 해 주는 기능이에요. 앱마다 인터넷을 확인하는 대신, 스마트폰이 알림 서버와 통로를 하나 열어 두고 소식을 대신 받아요. 소식이 도착하면 운영체제가 화면 위에 띄워 주고, 필요할 때만 앱이 잠깐 깨어나 내용을 채워요.
우편함까지 계속 내려갈 필요가 없어요
택배가 언제 올지 몰라 십 분마다 우편함까지 내려가 본다고 생각해 볼게요. 다리도 아프고 시간도 많이 들어요. 게다가 열 번 중 아홉 번은 헛걸음이에요.
앱이 새 소식을 확인하는 방법도 원래 이와 비슷했어요. 앱이 정해진 시간마다 서버에 '새 메시지 있나요?'라고 물어보는 방식을 폴링이라고 해요. 앱이 많아질수록 헛걸음이 늘고 배터리도 빨리 닳아요.
푸시 알림은 방향이 반대예요. 소식이 생긴 쪽에서 먼저 알려 주니 우리가 확인하러 갈 일이 없어요. 경비실이 택배를 대신 받아 두었다가 인터폰으로 먼저 불러 주는 것과 같은 모양이에요.
덕분에 앱은 평소에 아무 일도 하지 않고 쉬어요. 소식이 왔을 때도 필요할 때만 잠깐 깨어나면 되니까요.
경비실에 호수를 등록해 두는 것처럼
경비실이 나를 부르려면 내가 몇 호에 사는지 알고 있어야 해요. 앱을 처음 실행하면 스마트폰이 알림 서버에서 그 앱만의 주소를 하나 받아 와요. 그 주소를 앱 회사 서버에 등록해 두죠. 알림을 허락해야 이 주소로 온 소식이 화면에 뜰 수 있어요.
새 메시지가 생기면 앱 회사 서버는 우리 휴대폰으로 직접 연락하지 않아요. 대신 알림 서버에 '이 주소로 이 내용을 전해 주세요'라고 부탁해요. 택배를 경비실에 맡기는 것과 같아요.
휴대폰은 켜져 있는 동안 알림 서버와 가느다란 통로 하나를 늘 열어 둬요. 소식이 오면 이 통로로 곧장 내려오고, 운영체제가 화면 위에 띄워 줘요. 필요하면 앱이 그때 잠깐 깨어나 내용을 채워 넣기도 해요.
앱마다 따로 통로를 열지 않고 하나만 함께 쓰기 때문에 배터리와 데이터가 훨씬 덜 들어요.
조금 더 정확히 말하면
경비실 비유로 알림이 늦는 이유도 설명돼요. 휴대폰이 절전 상태로 깊이 잠들면 통로가 잠깐 닫혀요. 그동안 온 알림은 다시 연결될 때 몰아서 오기도 하지만, 일부는 빠지고 가장 최근 알림만 오기도 해요. 인터넷이 끊겨 있을 때도 마찬가지예요.
알림에 실려 오는 내용은 아주 짧아요. 사진이나 대화 전체가 아니라 '새 메시지가 있다'는 짧은 쪽지에 가까워요. 그래서 알림을 눌러 앱을 열면 그때 나머지를 서버에서 받아 와요. 알림은 소식의 요약인 셈이에요.
알림을 꺼 두어도 메시지가 사라지지는 않아요. 경비실이 부르지 않았을 뿐 택배는 그대로 놓여 있어요. 나중에 앱을 열면 그동안 온 소식이 그대로 보여요.
웹사이트에서 오는 알림도 통로를 빌려 쓰는 방식은 같아요. 다만 이 통로는 소식을 전해 줄 뿐이라, 무엇을 보여 줄지는 앱과 사용자의 설정이 정해요.
흔한 오해
푸시 알림을 받으려면 앱이 백그라운드에서 계속 켜져 있어야 한다.
앱이 꺼져 있어도 운영체제가 대신 소식을 받아 띄워요. 필요할 때만 앱이 알림이 도착한 뒤 잠깐 깨어나 내용을 채워요.
알림을 꺼 두면 상대가 보낸 메시지도 도착하지 않는다.
메시지는 서버에 그대로 도착해 있어요. 화면 위에 띄우는 일만 하지 않을 뿐이에요.
일상에서 만나요
배달 앱을 닫아 두어도 '조리를 시작했어요' 같은 소식이 화면 위에 떠요.
메신저를 열지 않아도 잠금 화면에 새 대화의 첫 줄이 미리 보여요.
그러니까 한마디로
앱이 서버를 계속 확인하는 대신, 늘 열어 둔 통로로 소식이 먼저 도착해 화면에 뜨게 해 주는 기능이에요.