서버 프로그램에서 앱으로 전송하는 네트워크 트래픽을 최적화하는 것은 쉬운 일이 아닙니다. 이 문제를 해결하려면 앱에서 주기적으로 서버를 폴링하여 업데이트를 확인해야 합니다. 이 방법을 사용하면 앱에서 기기의 무선 기능을 시작할 때 새로 얻은 데이터가 없다는 응답만 받은 채 네트워크 연결 및 전력을 낭비할 수 있습니다. 새로운 데이터가 있을 때 서버가 앱에 알리는 것이 훨씬 더 효율적이지만 서버에서 수천 개의 기기로 알림을 전송하는 방법을 찾기란 결코 쉬운 일이 아니었습니다.
Firebase 클라우드 메시징(FCM) 서비스는 앱이 어디에 설치되어 있든 서버가 앱의 인스턴스에 알림을 전송할 수 있게 허용합니다. 이로써 네트워크 효율성을 높이고 전력 사용량을 줄여 이러한 통신 문제를 해결합니다.
이 강의에서는 FCM 서비스를 사용하여 서버에서 시작한 작업의 네트워크 사용과 배터리 소비를 줄이는 방법을 설명합니다.
FCM을 사용하여 서버 업데이트 전송
Firebase 클라우드 메시징(FCM)은 앱 서버에서 앱으로 간단한 메시지를 전송하는 데 사용되는 경량 메커니즘입니다. FCM을 사용하면 앱 서버가 메시지 전달 메커니즘을 이용하여 새 데이터가 있다는 것을 앱에 알립니다.
이 접근 방식에서는 새로 얻을 수 있는 데이터가 없을 때 새 데이터의 백엔드 서버에 접속하지 않으므로 앱에서 실행하는 네트워크 트래픽이 없어집니다.
FCM 사용의 한 가지 예로 회의에서 발표자 세션을 나열하는 앱을 들 수 있습니다.
서버에서 세션이 업데이트되면 서버는 업데이트가 있음을 알리는 간단한 메시지를 앱에 보냅니다. 그러면 앱은 서버에 새 데이터가 있을 때만 기기의 세션을 업데이트하도록 서버를 호출할 수 있습니다.
FCM은 앱이 서버의 변경사항을 폴링하게 하는 것보다 더 효율적입니다. FCM 서비스를 사용하면 폴링해도 업데이트가 반환되지 않는 불필요한 연결이 없어지고 기기의 무선 기능이 켜지게 할 수 있는 주기적인 네트워크 요청이 실행되지 않습니다. FCM은 여러 앱에서 사용할 수 있으므로 앱에서 이 서비스를 사용하면 기기에 필요한 총 네트워크 연결 수가 줄어들고 기기 무선 기능이 더 자주 절전 모드로 전환됩니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Optimize server-initiated network use\n\nNetwork traffic sent by server programs to your app can be challenging to\noptimize. A solution to this problem is for your app to periodically poll the\nserver to check for updates. This approach can waste network connection and\npower when your app starts up a device's radio, only to receive an answer that\nno new data is available. A far more efficient approach would be for the server\nto notify your app when it has new data, but figuring out how to send a\nnotification from your server to potentially thousands of devices was previously\nno easy feat.\n\nThe Firebase Cloud Messaging (FCM) service solves this communication problem by\nallowing your servers to send notifications to instances of your app wherever\nthey are installed, enabling greater network efficiency and lowering power\nusage.\n\nThis lesson teaches you how to apply the FCM service to reduce network use for\nserver-initiated actions and reduce battery consumption.\n\nSend server updates with FCM\n----------------------------\n\nFirebase Cloud Messaging (FCM) is a lightweight mechanism used to transmit brief\nmessages from an app server to your app. Using FCM, your app server uses a\nmessage-passing mechanism to notify your app that there is new data available.\nThis approach eliminates network traffic that your app would perform, by not\ncontacting a backend server for new data when no data is available.\n\nAn example use of FCM is an app that lists speaker sessions at a conference.\nWhen sessions are updated on your server, the server sends a brief message to\nyour app telling it updates are available. Your app can then call the server to\nupdate the sessions on the device only when the server has new data.\n\nFCM is more efficient than having your app poll for changes on the server. The\nFCM service eliminates unnecessary connections where polling would return no\nupdates, and it avoids running periodic network requests that could cause a\ndevice's radio to power up. Since FCM can be used by many apps, using it in your\napp reduces the total number of network connections needed on a device and\nallows the device radio to sleep more often.\n| **Note:** When using FCM, your app can pass messages in normal or high priority. Your server should typically use normal priority to deliver messages. Using this priority level prevents devices from being woken up if they are inactive and in a low-power Doze state. Use high priority messages only if absolutely required."]]