Ang FCM (Firebase Cloud Messaging) ay isang cross-platform na serbisyo mula sa Google para sa paghahatid ng mga push notification at paglilipat ng data sa pagitan ng server at mga mobile application. Sinusuportahan nito ang Android, iOS at mga web platform sa pamamagitan ng iisang API. Ayon sa Firebase Documentation, ang FCM ay nagpoproseso ng mahigit 1 bilyong mensahe araw-araw sa buong mundo.
Mga pangunahing punto
Ang Firebase Cloud Messaging (FCM) ay isang cloud service mula sa Google na nagbibigay ng maaasahang paghahatid ng mga push notification at data message sa mga mobile device. Dating kilala bilang Google Cloud Messaging (GCM), ang FCM ay naging pangunahing tool para sa cross-platform na mga notification sa ecosystem ng Firebase.
Awtomatikong pinipili ng FCM ang pinakamainam na channel ng paghahatid batay sa platform: sa Android ginagamit nito ang sariling FCM connection, sa iOS — APNS (sa pamamagitan ng FCM gateway). Hindi kailangan ng developer na magpatupad ng dalawang magkaibang integrasyon — inaako ng FCM ang routing.
Ang serbisyo ay nagbibigay ng nag-iisang REST API at Admin SDK para sa pagpapadala ng mga mensahe. Ito ay nagpapahintulot sa pagpapadala ng mga notification mula sa server side nang walang pagkakatali sa isang partikular na platform ng tatanggap.
Sinusuportahan ng FCM ang ilang mode ng paghahatid: isang mensahe sa partikular na device, group sending ayon sa paksa (topic) at segment sending ayon sa kondisyon (condition). Available din ang pag-schedule ng pagpapadala at A/B testing ng nilalaman ng notification.
Ang arkitektura ng FCM ay batay sa tatlong bahagi: client application, Firebase Connection Server at application server (app server). Ang client ay nagrehistro sa FCM sa pagsisimula at tumatanggap ng natatanging registration token — isang string na nagpakilala ng device para sa application na ito.
Ang application server ay nagpapadala ng kahilingan sa FCM REST API, na tinutukoy ang token ng tatanggap o paksa. Ang Firebase Connection Server ay naghahatid ng mensahe gamit ang permanenteng XMPP connection o HTTP request. Kung offline ang device — ang mensahe ay naka-queue at ihahatid kapag bumalik ang koneksyon.
Ginagarantiyahan ng FCM ang paghahatid gamit ang priority queue at mekanismo ng pagkumpirma ng pagtanggap. Sa Android, ang mensahe ay iniimbak hanggang 28 araw sa queue, sa iOS — hanggang 4 na linggo (sa pamamagitan ng APNS). Pagkatapos ng panahon, ang mensahe ay tatanggalin nang walang abiso.
Ang registration token ay maaaring magbago sa ilang kaso: sa pag-restore ng data ng application, sa pag-update sa bagong bersyon o sa pag-clear ng cache. Ang application ay dapat magpatupad ng FirebaseMessagingService.onNewToken para sa pagproseso ng token update at synchronization sa server.
Sinusuportahan ng FCM ang dalawang uri ng payload: notification at data. Ang bawat uri ay tumutukoy kung paano at kailan pinoproseso ang mensahe sa device ng tatanggap.
| Parameter | Notification | Data |
|---|---|---|
| Awtomatikong pagpapakita | Oo, kung ang app ay nasa background | Hindi, sa app lamang |
| Pagproseso | System — sa background; app — sa foreground | Palagi sa app (onMessageReceived) |
| Pinakamataas na laki | 4 KB | 4 KB |
| Custom na key | Limitado sa predefined na field | Anumang key-value pair |
| Nangangailangan ng CollapseKey | Opsyonal | Opsyonal para sa pagpapangkat |
Sa praktika, inirerekomenda ang paggamit ng data message kung ang application ay nangangailangan ng buong pagproseso ng notification sa onMessageReceived. Ang notification message ay angkop para sa simpleng scenario kung saan sapat na ang system display.
Ang FCM at APNS ay ang dalawang pangunahing serbisyo ng push delivery. Ang FCM ay gumagana bilang cross-platform gateway, ang APNS — para lamang sa Apple ecosystem. Ang kanilang mga pangunahing pagkakaiba ay nasa arkitektura, mga kinakailangan sa certificate at mga mekanismo ng routing.
Ang pagpili sa pagitan ng FCM at direktang APNS ay depende sa arkitektura ng proyekto. Para sa cross-platform na application, ang FCM ay optimal na pagpili. Para sa iOS-only na proyekto, ang direktang trabaho sa APNS sa pamamagitan ng HTTP/2 API ay katanggap-tanggap.
Ang FCM ay makatwiran kapag ang proyekto ay gumagamit ng parehong Android at iOS, pati na rin sa pangangailangan ng Firebase analytics, A/B testing ng notification o mga paksa nang walang server logic. Ang direktang APNS ay mas gusto para sa iOS-only na application na may minimal na dependencies at mahigpit na kinakailangan para sa delivery latency.
Para ikonekta ang FCM sa Android application, kailangan idagdag ang Firebase SDK at i-configure ang google-services.json sa root ng proyekto. Pagkatapos ng registration ng token, ang application ay handa nang tumanggap ng mga mensahe sa pamamagitan ng FirebaseMessagingService.
// build.gradle (Module)
dependencies {
implementation("com.google.firebase:firebase-messaging:24.1.0")
}
// AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
message.notification?.let {
showNotification(it.title, it.body)
}
}
}
Pagkatapos ng configuration, awtomatikong natatanggap ng application ang FCM token sa unang pagtakbo. Ang token ay dapat ipadala sa application server para sa kasunod na pagpapadala ng mga notification sa device na ito.
Sa Android 8+, bago magpadala ng FCM notification na may awtomatikong pagpapakita, kailangan gumawa ng NotificationChannel. Ang FCM notification message ay gumagamit ng channel na may default na ID, ngunit inirerekomenda na gumawa ng sariling channel sa pamamagitan ng FirebaseMessagingService sa pagtanggap ng unang mensahe. Ang data message ay hindi nangangailangan ng channel — ang application mismo ang nagpapasya kung paano at kailan magpapakita ng notification.
Sa iOS, ang FCM ay kumikilos bilang tagapamagitan sa pagitan ng application server at APNS. Ang Firebase ay tumatanggap ng mensahe mula sa server, binabalot ito sa APNS format at ipinapadala sa pamamagitan ng Apple gateway. Ang developer ay kailangang mag-configure ng APNS key o certificate sa Firebase console.
import FirebaseMessaging
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current().delegate = self
Messaging.messaging().delegate = self
return true
}
}
extension AppDelegate: MessagingDelegate {
func messaging(
_ messaging: Messaging,
didReceiveRegistrationToken fcmToken: String?
) {
UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
}
}
Sa iOS, ang registration sa APNS ay nangyayari nang asynchronous. Ang FCM SDK ay awtomatikong natatanggap ang APNS token at ipinapadala ito sa Firebase server. Ang didReceiveRegistrationToken ay nagti-trigger sa pagtanggap ng bagong FCM token, na pinagsasama ang APNS token sa project identifier.
Ang FCM ay nagbibigay ng Firebase console para sa pag-monitor ng paghahatid: bilang ng mga notification na ipinadala, natanggap at ipinakita. Available din ang status callback sa pamamagitan ng Firebase Cloud Functions para sa pagsubaybay ng mga error sa paghahatid sa server side. Mga pangunahing sukatan: impressions (mga pagpapakita) at opens (mga pagbubukas).
Sa pagtatrabaho sa FCM, mahalaga na pumili ng tamang uri ng mensahe para sa bawat scenario. Para sa simpleng notification na may awtomatikong pagpapakita, gamitin ang notification message. Para sa mga kaso kung saan kailangan ng application na iproseso ang data bago ipakita — data message. Ang mixed type (notification + data) ay inirerekomenda lamang kung ang data ay kailangan para sa analytics, hindi para sa pagbabago ng nilalaman ng notification.
Pamahalaan ang mga token nang centralisado. Itago ang kasalukuyang token sa server sa isang table na naka-link sa user at platform. Magpatupad ng mekanismo ng paglilinis ng lumang token: sa error na NotRegistered o InvalidRegistration, tanggalin ang token mula sa database. Bihira magbago ang mga token, ngunit ang paglilinis ng mga ito ay mandatoryong elemento ng suporta sa FCM.
Gumamit ng collapse key (collapseKey) para sa pagpapangkat ng mga mensahe. Kung magpapadala ka ng maraming notification ng parehong uri (halimbawa, „update ng currency rate”), itakda ang parehong collapseKey. Ang FCM ay maghahatid lamang ng huling mensahe mula sa grupo, na nagbabawas ng load sa device at hindi iniirita ang user ng baha ng notification.
Subaybayan ang paghahatid sa pamamagitan ng Firebase Console at Cloud Functions. Ang analytics ng FCM ay nagpapakita ng bilang ng mga notification na ipinadala, natanggap at ipinakita. Kung ang porsyento ng pagpapakita ay mas mababa sa 70% — suriin ang mga setting ng channel sa Android at mga pahintulot sa iOS. Ang mababang paghahatid ay madalas na nauugnay sa naka-disable na channel o pagbabawal ng notification. Ikalima: gamitin ang A/B testing ng Firebase para sa pag-optimize ng text ng notification at oras ng pagpapadala — ito ay nagpapataas ng conversion ng pagbubukas ng 15–25% ayon sa data ng Firebase.
Mga madalas itanong
Ang FCM ay isang ebolusyonaryong update ng GCM (Google Cloud Messaging). Ang FCM ay nag-aalok ng pinasimpleng configuration sa pamamagitan ng Firebase Console, built-in analytics, mga paksa at suporta sa Web Push. Ang GCM ay opisyal na naka-disable mula noong Abril 2019, lahat ng proyekto ay dapat i-migrate sa FCM.
Ang Firebase Cloud Messaging ay isang libreng serbisyo na walang limitasyon sa bilang ng mga mensahe. Ang bayad ay sinisingil lamang para sa paggamit ng iba pang serbisyo ng Firebase tulad ng Cloud Functions o Firestore. Ang FCM ay hindi nangangailangan ng Spark o Blaze subscription para sa basic na pagpapadala ng notification.
Nagbabago ang FCM token sa: pag-restore ng app mula sa backup, pag-clear ng data ng app, muling pag-install, pag-update sa bagong bersyon na may pagbabago ng Sender ID. Palaging iproseso ang onNewToken sa FirebaseMessagingService para sa pagpapadala ng bagong token sa server.
Ang FCM ng Google ay naka-block sa teritoryo ng China. Para sa paghahatid ng notification sa China, ginagamit ang mga alternatibong serbisyo: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Para sa cross-platform na paghahatid, ginagamit ang multi-provider na serbisyo tulad ng Getui.
Gamitin ang built-in na Firebase console: piliin ang „Cloud Messaging” — „Send Test Message”. Ilagay ang test token at magpadala ng notification message. Dapat lumitaw ang notification sa device. Maaari ring subaybayan ang mga log ng FirebaseMessagingService.onMessageReceived.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din