처음에는 이것이 Android 클라우드 대 장치 메시징 인스턴스 일 가능성이 가장 높았 지만 다음과 같이 할 수는 없었습니다. WhatsApp은 필요한 권한을 선언하지 않고 Eclair (Android 2.1)에서 작동하지만 클라우드 대 장치 메시징 ( Google 클라우드 메시징을 대체하려면 최소한 Froyo (Android 2.2)가 필요합니다.
그러나 이는 일종의 푸시 알림 서비스 일 가능성이 높습니다 . WhatsApp의 소스 코드에 액세스하지 않고 어떻게 구현되었는지 정확하게 말할 수는 없습니다.
그러나 사용하지 않을 때 메시지를 수신 할 수 있다는 점은 비교적 설명하기 쉽습니다. 응용 프로그램에는 거의 확실하게 백그라운드에서 실행 되는 서비스 가있어 서버와 주기적으로 체크인하거나 서버 푸시 또는 기타 작업을받습니다. 메시지를 받으면 서비스가 알림을 팝업합니다.
서버가 어떻게 푸시를 수행 할 수 있는지에 대한 질문에 대해서는 다음과 같은 가능성이 있습니다 (다시 말하면 소스 코드없이 확인할 수 없습니다).
- WhatsApp은 두 개의 소켓을 시작하고 엽니 다. 하나는 듣고, 하나는 서버에 메시지를 보냅니다.
- WhatsApps는 첫 번째 소켓에서 청취를 시작합니다.
- WhatsApp은 전화 번호와 수신 소켓 포트가 포함 된 메시지를 서버로 보내고 확인을 기다립니다.
- 서버는 메시지의 전화 및 포트 번호와 메시지의 IP 주소를 기록합니다.
- 서버는 승인을 앱에 보냅니다.
- 앱이 승인을 받고 메시지 소켓을 닫습니다.
- 대상으로 전화 번호가 포함 된 메시지가 서버로 들어옵니다.
- 서버는 전화 번호와 연결된 IP 주소와 포트 번호를 사용하고 해당 정보를 사용하여 메시지를 전화로 보냅니다.
이 기능을 사용하려면 앱이 네트워크 연결 상태를 모니터링하고 청취 소켓을 재설정하고 필요한 경우 등록 메시지를 다시 보내야합니다 (예 : IP 주소가 변경되는 경우).