Firebase Cloud Messaging: шта је то, принцип рада и push обавештења

Аутор: IT Sectr Објављено: 2026-04-29 Време читања: 9 мин

Firebase Cloud Messaging (FCM) — то је вишеплатформски сервис за доставу push обавештења и порука од Google-а, намењен мобилним и веб апликацијама. FCM обезбеђује поуздан пренос података између сервера и клијентских уређаја без потребе за одржавањем сталне мрежне везе. Према Firebase Documentation, 2026, кроз FCM инфраструктуру дневно прође више од 300 милијарди порука широм света. Сервис подржава како обавештења са аутоматским приказом, тако и data поруке за скривени пренос података у позадини.

Главне ставке

  • FCM — бесплатни сервис push обавештења од Google-а са подршком за Android, iOS и Web преко јединственог API-ја и Firebase Console-а.
  • Типови порука — notification поруке се аутоматски приказују од стране система, data поруке омогућавају слање произвољног JSON-а и обраду у апликацији.
  • Токени уређаја — свака апликација добија јединствени Registration Token који сервер користи за циљано слање push обавештења.
  • Приоритети доставе — normal и high приоритети одређују понашање система при уштеди батерије: high поруке буде уређај из Doze режима.
  • Топици и групе — FCM подржава претплату на топике за масовну дистрибуцију и Device Groups за слање на више уређаја једног корисника.

Шта је Firebase Cloud Messaging

Firebase Cloud Messaging — то је Google-ов облачни сервис који обезбеђује пренос push обавештења и data порука између сервера апликације и клијентских уређаја. Сервис је заменио застарели Google Cloud Messaging (GCM) и постао стандардно решење за доставу push у Firebase екосистему. FCM подржава Android, iOS, Web и Unity, пружајући јединствени интерфејс за слање независно од циљне платформе.

Кључне могућности FCM-а

Сервис пружа неколико механизама доставе порука, од којих сваки решава свој задатак. Notification поруке систем аутоматски приказује приликом пријема — програмер не мора да пише код за приказ обавештења. Data поруке преносе произвољан payload у облику парова кључ-вредност и обрађују се унутар апликације. Комбиноване поруке садрже истовремено видљиви и скривени део за максималну флексибилност.

Предности у односу на сопствено решење

Имплементација сопственог push сервера захтева стално одржавање TCP везе са сваким уређајем, што је неефикасно и небезбедно. FCM користи јединствену Google-ову инфраструктуру која одржава везу са милијардама уређаја истовремено. Сервис аутоматски управља поновљеним покушајима доставе, редовима порука и балансирањем оптерећења, ослобађајући програмера потребе да сам решава ове задатке.

Како ради Firebase Cloud Messaging

FCM архитектура се састоји од три кључне компоненте: сервера провајдера (ваш backend), Firebase Cloud Messaging сервера и клијентске апликације на уређају. Када сервер пошаље поруку, она прво стиже у FCM инфраструктуру која је усмерава ка циљном уређају. Ако је уређај ван мреже, FCM чува поруку у реду и доставља је када се веза успостави.

Регистрација уређаја и добијање токена

Приликом првог покретања, апликација позива Firebase SDK који региструје уређај у FCM сервису и добија јединствени Registration Token. Овај токен је низ од око 150 знакова који идентификује одређену инстанцу апликације на одређеном уређају. Токен се може променити приликом поновне инсталације апликације, брисања података или враћања из backup-а — програмер треба да обради ажурирање токена преко делегата onNewToken.

Животни циклус поруке

Када сервер пошаље захтев преко FCM API-ја, порука пролази кроз неколико фаза. Пријем и валидација — FCM проверава исправност захтева и постојање циљног уређаја. Ред — ако је уређај недоступан, порука иде у ред за чување. Усмеравање — FCM одређује оптимални канал доставе (Wi-Fi или мобилни подаци). Достава — систем преноси поруку циљној апликацији. Након успешне доставе, FCM враћа серверу идентификатор поруке.

Типови порука у FCM

Firebase Cloud Messaging подржава три типа порука, од којих сваки има своје карактеристике обраде на клијентској страни. Notification поруке обрађује системски сервис Google Play Services у Android-у и APNs у iOS-у и аутоматски се приказују као push банери. Data поруке се преносе директно апликацији и обрађују преко callback-а onMessageReceived у Android-у и application(_:didReceiveRemoteNotification:) у iOS-у.

Notification поруке

Notification порука садржи предефинисана поља: title, body, URL слике и звук обавештења. Систем аутоматски креира и приказује обавештење у системској палети, чак и ако је апликација у позадини или угашена. Корисник види стандардни банер са насловом и текстом, а кликом се апликација отвара са подацима пренетим у payload-у. Ако је апликација активна, notification порука се може пресрести и обрадити у коду.

Data поруке

Data порука је прилагођени скуп парова кључ-вредност без предефинисаних поља. Payload систем не обрађује аутоматски — апликација добија сирове податке и може их тумачити на произвољан начин. Data поруке се користе за синхронизацију података у позадини, ажурирање локалног кеша, покретање синхронизације или пренос команди без приказа обавештења. У Android-у data порука се увек доставља, чак и ако је апликација угашена или у позадини.

Комбиноване поруке

FCM омогућава слање поруке која истовремено садржи notification део (за приказ) и data део (за обраду). Комбиновани payload укључује и предефинисана поља notification-а и произвољне кључеве data-е. Систем приказује обавештење из notification дела, а data део се преноси у intent extras апликације приликом отварања. Ово је згодно за сценарије где треба приказати обавештење и истовремено пренети контекст за прелазак на одређени екран.

ТипАуто-приказОбрада у позадиниПример
NotificationДа, системскиАутоматски, без кодаДобродошлица push обавештење
DataНеПреко callback-а апликацијеСинхронизација података у позадини
КомбинованаДа, notification деоData део при отварањуОбавештење + линк за поруџбину

Подешавање FCM у Android-у

Интеграција FCM у Android почиње повезивањем Firebase SDK-а преко build.gradle датотеке на нивоу апликације. Након додавања зависности и google-services.json датотеке, апликација аутоматски добија Registration Token који се преноси преко FirebaseMessagingService callback-а. За пријем обавештења потребно је креирати сервис који наслеђује FirebaseMessagingService и регистровати га у AndroidManifest.xml-у.

Иницијализација и добијање токена

Након повезивања SDK-а, Firebase аутоматски генерише токен уређаја без додатног кода. Токен је доступан преко FirebaseMessaging.getInstance().token, који враћа Task. За праћење ажурирања токена, метода onNewToken се преписује у сервису. Токен се мора пренети серверу провајдера како би сервер могао да шаље push обавештења на овај уређај.

kotlin
class MyFirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        val data = message.data
        val title = "Нова порука"
        val body = data["body"] ?: ""
        showNotification(title, body)
    }
}

Регистрација сервиса у манифесту

Сервис за пријем FCM порука мора бити регистрован у AndroidManifest.xml-у са одговарајућим intent-filter-ом. Додавање tag-а service са дозволом INTERNET и навођењем action. Без регистрације сервиса, поруке неће бити достављене апликацији у позадини. За приказ обавештења у Android 13+ потребна је runtime дозвола POST_NOTIFICATIONS.

xml
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
    "android.permission.POST_NOTIFICATIONS" />

<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name=
            "com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

Подешавање FCM у iOS-у

Интеграција FCM у iOS захтева подешавање како на страни Apple Push Notification Service (APNs), тако и у Firebase Console-у. За разлику од Android-а, где FCM директно управља везом, у iOS-у FCM користи APNs као транспортни слој. Апликација се региструје за примање push обавештења преко UIApplication.shared.registerForRemoteNotifications, а Firebase SDK пресреће примљени device token и повезује га са FCM Registration Token-ом.

Подешавање APNs и регистрација за обавештења

За рад FCM-а у iOS-у потребно је учитати APNs кључ или сертификат у Firebase Console. APNs кључ — то је савремени начин аутентификације без сертификата (препоручује Apple). Кључ се креира у Apple Developer Portal-у у секцији Keys и учитава у подешавања Cloud Messaging у Firebase Console-у. Након подешавања APNs, апликација тражи дозволу за обавештења преко UNUserNotificationCenter-а и региструје се преко APNs-а.

swift
import Firebase
import UserNotifications

class AppDelegate: NSObject, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions
        launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current()
            .requestAuthorization(options: [.alert, .sound, .badge])
        application.registerForRemoteNotifications()
        return true
    }

    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken
        deviceToken: Data
    ) {
        Messaging.messaging()
            .apnsToken = deviceToken
    }
}

Обрада долазних обавештења

За обраду примљених обавештења имплементира се делегат UNUserNotificationCenter. Метода willPresent се позива када је обавештење примљено док је апликација активна — овде се може приказати прилагођено in-app обавештење или игнорисати системски банер. Метода didReceive се позива када корисник кликне на обавештење — овде се врши прелазак на одговарајући екран. За data поруке користи се делегат MessagingDelegate који прима payload приликом пријема FCM поруке у позадини.

Слање порука са сервера

Серверско слање FCM порука се врши преко HTTP v1 API Firebase Cloud Messaging или застарелог Firebase Cloud Messaging API-ја. HTTP v1 API је препоручени начин, користи OAuth 2.0 аутентификацију преко Service Account-а и подржава све савремене могућности FCM-а, укључујући аналитику доставе и A/B тестирање обавештења. Захтев се шаље POST методом на endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send.

Формат захтева HTTP v1

Тело захтева садржи JSON објекат са информацијама о поруци: target (токен, топик или услов), notification (за приказ) и data (прилагођени payload). Аутентификација преко Service Account JSON кључа који се учитава у променљиве окружења сервера. Приступни токен се генерише преко google-auth-library библиотеке. Google препоручује коришћење Firebase Admin SDK-а за аутоматско управљање аутентификацијом и поновљеним покушајима.

js
const admin = require("firebase-admin")

const serviceAccount = require("./serviceAccountKey.json")

admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })

const message = {
    token: "device_registration_token",
    notification: { title: "Попуст 20%", body: "За све услуге данас" },
    data: { screen: "promo", promoId: "324" },
    android: { priority: "high" },
    apns: { payload: { aps: { sound: "default" } } }
}

admin.messaging().send(message)
    .then(response => {
        console.log("Успешно послато:", response)
    })
    .catch(error => {
        console.log("Грешка при слању:", error)
    })

Топици и масовна дистрибуција

За слање обавештења групи корисника, FCM подржава претплату на топике. Топик — то је именовани канал на који се клијентска апликација претплаћује преко FirebaseMessaging.getInstance().subscribeToTopic(). Сервер може послати поруку на топик и она ће бити достављена свим претплаћеним уређајима. Топици су погодни за билтене, промотивна обавештења и event push. За прецизнију сегментацију користе се услови (conditions) засновани на више топика са логичким операторима.

Често постављана питања

Која је разлика између FCM-а и APNs-а?

FCM ради на Android-у преко сопствене Google инфраструктуре, а на iOS-у користи APNs као транспортни протокол. FCM пружа јединствени API за обе платформе, аутоматско чување порука ван мреже и аналитику доставе, чега нема у чистом APNs-у.

Могу ли се слати FCM поруке без сервера?

Да, преко Firebase Console-а у секцији Cloud Messaging можете ручно слати обавештења на изабране уређаје, топике или сегменте публике. Функција је погодна за тестирање и једнократне испоруке, али не замењује серверску интеграцију за production апликације.

Шта радити ако се токен уређаја променио?

Претплатите се на ажурирања токена преко onNewToken у FirebaseMessagingService (Android) или MessagingDelegate (iOS). Када се токен промени, пошаљите нови токен на сервер и обришите стари. Сервер треба да ажурира базу података и престане са покушајима слања на застарели токен.

Како FCM обрађује уређаје ван мреже?

FCM чува поруку у реду до 28 дана и доставља је када се веза успостави. За notification поруке, само последња порука за сваку групу за колапсирање се колапсира. Data поруке се чувају одвојено и достављају се редом слања без колапсирања.

Колико кошта коришћење Firebase Cloud Messaging-а?

FCM је потпуно бесплатан без ограничења на број порука. Коришћење FCM-а се не наплаћује ни у Spark плану ни у Blaze плану. Ограничења постоје само на величину payload-а: до 4 KB за notification поруке и до 2 KB за data поруке.

Резиме

  • Firebase Cloud Messaging — вишеплатформски сервис push обавештења од Google-а који подржава Android, iOS, Web и Unity преко јединственог API-ја.
  • FCM архитектура се састоји од сервера провајдера, Firebase инфраструктуре и клијентске апликације, обезбеђујући поуздану доставу порука преко глобалне Google мреже.
  • Три типа порука — notification (ауто-приказ), data (произвољан payload без UI) и комбиноване (оба типа у једној поруци).
  • FCM у Android-у ради преко FirebaseMessagingService-а са сопственом везом, а у iOS-у користи APNs као транспорт са пресретањем токена преко MessagingDelegate-а.
  • HTTP v1 API се препоручује за серверско слање са OAuth 2.0 аутентификацијом преко Service Account-а и подршком за аналитику доставе.
  • Топици омогућавају слање порука групама претплатника, а услови (conditions) комбиновање више топика за прецизну сегментацију.
  • FCM је бесплатан без ограничења на број порука, са чувањем порука ван мреже до 28 дана и максималном величином payload-а од 4 KB.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође