푸시 알림은 어떻게 작동합니까?


25

푸시 알림 시스템이 어떻게 작동하는지 궁금합니다.

백그라운드에서 Google 서버에 실행중인 활성 TCP / IP 연결이 있습니까?


1
약간 읽기 어려운 Wikipedia를 참조하십시오 . 기본적으로, 쉬운 말로 표현하자면 : 클라이언트가 서버에 연결하여 정보를 요청합니다. 정보가 사용 가능할 때 (또는 존재하지 않는 경우) 응답이 "지연"됩니다. 새로운 요청. 그렇습니다. 배터리에 영구적 인 백그라운드 TCP / IP 연결이 필요합니다.
Izzy

@Izzy 맞지 않을 수 있습니다. (1) 문서에 메시지가 도착하면 인 텐트가 생성되었다고 말하고 (2) Android에서 실행중인 항목이 Android를 절대로 죽일 수없는 연결을 유지할 수 있습니까?
Michael

@Michael 어떤 문서입니까? 나는 그것의 깊이를 이해하는 안드로이드 프로그래머가 아닙니다 (그리고 이것은 토론 게시판이 아닙니다). 그래서 나는 여기서 당신과 논쟁 할 수 없습니다. 나는 들었습니다 청취자 (방송에)을 동적으로 설정할 수 있습니다 -하지만 난 그것에 대해 들어 본 적이 의도 (IMHO 그들이 할 필요가 선언 에서 Manifest). 일부 Google 서비스가 "실제 작업"을 수행하고 앱이 단순히 "수신자"를 등록한다고 상상할 수 있습니다. 위의 설명은 안드로이드에 국한된 것이 아니라 "일반적인"것이 었으며, 간단하게 유지하려고 노력했습니다.)
Izzy

답변:


25

예, Android는 Google 서버에 하나의 활성 연결을 유지하지만 휴대 전화의 앱에 GCM 메시지를 보낼 때까지 트래픽이 전송되지 않기 때문에 많은 전력이나 데이터를 사용하지 않습니다. 휴대 전화에는 모든 앱에서 사용하는 연결이 하나뿐입니다. GCM을 사용하는 새 앱을 설치해도 추가로드가 발생하지 않습니다.

GCM의 첫 단계는 이메일 서버와 같은 타사 서버가 Google GCM 서버에 요청을 보내는 것입니다. 그런 다음이 서버는 열린 연결을 통해 장치로 메시지를 보냅니다. Android 시스템은 메시지를보고 어떤 앱인지 확인하고 해당 앱을 시작합니다. GCM을 사용하려면 앱이 Android에 등록되어 있어야하며 관련 권한이 있어야합니다. 앱이 시작되면 메시지의 데이터로 바로 알림을 생성 할 수 있습니다. GCM 메시지의 크기는 매우 제한적이므로 앱에서 타사 서버에 대한 일반 연결을 열어서 추가 정보를 얻을 수 있습니다 (예 : 새 이메일 헤더 다운로드).

푸시 알림을 사용하면 새로운 데이터를 확인하기 위해 앱을 정기적으로 실행할 필요가 없으므로 전력과 데이터가 모두 절약됩니다. GCM과 같은 중앙 집중식 메커니즘의 이점은 기기에 하나의 개방형 네트워크 연결 만 필요하며 Android GCM 시스템은 자체 네트워크를 유지하기 위해 백그라운드에서 실행중인 각 앱이 아니라 계속 실행해야하는 유일한 것입니다 자체 서버에 연결합니다.


하나의 주석 만 추가합니다. GCM 메시지의 크기는 4KByte가 될 수 있으므로 그렇게 제한되지는 않습니다. developer.android.com/google/gcm/gcm.html
Moszi

이 연결을 유지하는 것은 무엇입니까? 언제든지 모든 Android 활동 또는 서비스를 종료 할 수 있습니다.
Michael

1
정보에 대해서 감사드립니다. 내 질문 에 따르면 , 열린 소켓의 URL이 무엇인지 알고 있습니까? (장치에서 GCM 서버로 연결되어 알림 데이터에 사용되는 연결의 URL)
Sabeti

6

Android OS는 이제 푸시 알림 WS에 GCM (Google Cloud Messaging)을 사용하고 있습니다. 여기서 더 나은 아이디어를 얻을 수 있습니다 . 수명주기가있는 전체 푸시 알림 서비스에 대한 아키텍처 개요를 제공합니다.

그것이 도움이되기를 바랍니다.


Google 서버에 의존하지 않고 비슷한 일을 할 수있는 방법이 있습니까?
Michael

@Michael Amazon 클라우드 서비스를 사용하십니까? 그들은 비슷한 개념을 가지고있는 것 같습니다. 그러나 "방법"의 경우, 여기가 잘못된 곳입니다.)
Izzy

1

낡은 질문에 늦게 대답했지만 가치가 있습니다.

GCM은 2018 년 4 월에 더 이상 사용되지 않으며 Google은 GCM과 유사한 FCM을 사용하는 것이 좋습니다.

  1. 자체 등록 또는 가입 재시도 로직을 작성할 필요가 없습니다.
  2. 웹 콘솔이있는 서버리스 알림 솔루션 인 Firebase 알림을 사용하면 누구나 Firebase Analytics 통찰력을 기반으로 특정 대상을 대상으로 알림을 보낼 수 있습니다.
  3. GCM의 핵심 인프라가 있습니다.
  4. 단일 메시지는 최대 4KB의 페이로드를 클라이언트 앱으로 전송할 수 있습니다.

1
앱 관점에서 FCM은 GCM과 유사하지 않으며 동일합니다. FCM은 GCM의 새로운 이름입니다.
로버트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.