Firebase Cloud Messaging: vad är det, funktionsprincip och push-notiser

Författare: IT Sectr Publicerad: 2026-04-29 Lästid: 9 min

Firebase Cloud Messaging (FCM) — är en plattformsoberoende tjänst för leverans av push-notiser och meddelanden från Google, avsedd för mobila och webbapplikationer. FCM säkerställer tillförlitlig dataöverföring mellan servern och klientenheter utan att behöva upprätthålla en permanent nätverksanslutning. Enligt Firebase Documentation, 2026 passerar mer än 300 miljarder meddelanden dagligen genom FCM:s infrastruktur över hela världen. Tjänsten stöder både notiser med automatisk visning och data-meddelanden för dold dataöverföring i bakgrunden.

Huvudpunkter

  • FCM — gratis push-notistjänst från Google med stöd för Android, iOS och Web via ett enhetligt API och Firebase Console.
  • Meddelandetyper — notification-meddelanden visas automatiskt av systemet, data-meddelanden möjliggör sändning av godtycklig JSON och bearbetning i applikationen.
  • Enhetstoken — varje applikation får en unik Registration Token som servern använder för riktad sändning av push-notiser.
  • Leveransprioriteringar — normal och high prioriteringar bestämmer systemets beteende vid batteribesparing: high-meddelanden väcker enheten från Doze-läge.
  • Ämnen och grupper — FCM stöder prenumeration på ämnen för massutskick och Device Groups för sändning till flera enheter av en användare.

Vad är Firebase Cloud Messaging

Firebase Cloud Messaging — är en molntjänst från Google som överför push-notiser och data-meddelanden mellan applikationsservern och klientenheter. Tjänsten har ersatt den föråldrade Google Cloud Messaging (GCM) och blivit standardlösningen för push-leverans i Firebase-ekosystemet. FCM stöder Android, iOS, Web och Unity och erbjuder ett enhetligt sändningsgränssnitt oavsett målplattform.

FCM:s viktigaste funktioner

Tjänsten erbjuder flera mekanismer för meddelandeleverans, var och en löser sin egen uppgift. Notification-meddelanden visas automatiskt av systemet vid mottagning — utvecklaren behöver inte skriva kod för att visa notisen. Data-meddelanden överför en godtycklig payload i form av nyckel-värdepar och bearbetas inuti applikationen. Kombinerade meddelanden innehåller både synliga och dolda delar för maximal flexibilitet.

Fördelar jämfört med egen lösning

Att implementera en egen push-server kräver permanent underhåll av TCP-anslutning med varje enhet, vilket är ineffektivt och osäkert. FCM använder Googles enhetliga infrastruktur som upprätthåller anslutning med miljarder enheter samtidigt. Tjänsten hanterar automatiskt återförsök för leverans, meddelandeköer och lastbalansering, vilket befriar utvecklaren från att behöva lösa dessa uppgifter själv.

Hur fungerar Firebase Cloud Messaging

FCM-arkitekturen består av tre huvudkomponenter: leverantörsservern (din backend), Firebase Cloud Messaging-servern och klientapplikationen på enheten. När servern skickar ett meddelande går det först in i FCM-infrastrukturen som dirigerar det till målenheten. Om enheten är offline lagrar FCM meddelandet i en kö och levererar det när anslutningen återställs.

Enhetsregistrering och tokeninhämtning

Vid första start anropar applikationen Firebase SDK som registrerar enheten i FCM-tjänsten och får en unik Registration Token. Denna token är en sträng på cirka 150 tecken som identifierar en specifik applikationsinstans på en specifik enhet. Token kan ändras vid ominstallation av applikationen, rensning av data eller återställning från backup — utvecklaren bör hantera token-uppdatering via delegaten onNewToken.

Meddelandets livscykel

När servern skickar en begäran via FCM API går meddelandet igenom flera steg. Mottagning och validering — FCM kontrollerar begäran korrekthet och målenhetens existens. Kö — om enheten inte är tillgänglig hamnar meddelandet i en lagringskö. Dirigering — FCM bestämmer den optimala leveranskanalen (Wi-Fi eller mobildata). Leverans — systemet överför meddelandet till målapplikationen. Efter framgångsrik leverans returnerar FCM ett meddelande-ID till servern.

Meddelandetyper i FCM

Firebase Cloud Messaging stöder tre typer av meddelanden, var och en med sina egna bearbetningsegenskaper på klientsidan. Notification-meddelanden bearbetas av systemtjänsten Google Play Services i Android och APNs i iOS och visas automatiskt som push-banners. Data-meddelanden överförs direkt till applikationen och bearbetas via callback onMessageReceived i Android och application(_:didReceiveRemoteNotification:) i iOS.

Notification-meddelanden

Ett notification-meddelande innehåller fördefinierade fält: title, body, bild-URL och notisljud. Systemet skapar och visar automatiskt notisen i systemfältet, även om applikationen är i bakgrunden eller avstängd. Användaren ser en standardbanner med titel och text, och vid klick öppnas applikationen med data som överförts i payload. Om applikationen är aktiv kan notification-meddelandet fångas upp och bearbetas i koden.

Data-meddelanden

Ett data-meddelande är en anpassad uppsättning nyckel-värdepar utan fördefinierade fält. Payload bearbetas inte av systemet automatiskt — applikationen får rådata och kan tolka den på valfritt sätt. Data-meddelanden används för datasynkronisering i bakgrunden, uppdatering av lokal cache, utlösning av synkronisering eller överföring av kommandon utan att visa notis. I Android levereras data-meddelandet alltid, även om applikationen är avstängd eller i bakgrunden.

Kombinerade meddelanden

FCM tillåter sändning av ett meddelande som samtidigt innehåller en notification-del (för visning) och en data-del (för bearbetning). Kombinerad payload omfattar både fördefinierade notification-fält och godtyckliga data-nycklar. Systemet visar notisen från notification-delen och data-delen överförs till applikationens intent extras vid öppning. Detta är praktiskt i scenarier där man behöver visa en notis för användaren och samtidigt överföra kontext för navigering till en specifik skärm.

TypAutomatisk visningBearbetning i bakgrundenExempel
NotificationJa, av systemetAutomatiskt, utan kodVälkomst push-notis
DataNejVia applikationens callbackDatasynkronisering i bakgrunden
KombineratJa, notification-delData-del vid öppningNotis + orderlänk

Konfigurera FCM i Android

FCM-integration i Android börjar med att ansluta Firebase SDK via build.gradle-filen på applikationsnivå. Efter att beroenden och google-services.json-filen har lagts till får applikationen automatiskt Registration Token som överförs via FirebaseMessagingService-callback. För att ta emot notiser måste en tjänst skapas som ärver FirebaseMessagingService och registreras i AndroidManifest.xml.

Initiering och tokeninhämtning

Efter anslutning av SDK genererar Firebase automatiskt enhetstoken utan extra kod. Token är tillgänglig via FirebaseMessaging.getInstance().token, som returnerar Task. För att spåra token-uppdateringar åsidosätts metoden onNewToken i tjänsten. Token måste skickas till leverantörsservern så att servern kan skicka push-notiser till denna enhet.

kotlin
class MyFirebaseMessagingService :
    FirebaseMessagingService() {

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

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        val data = message.data
        val title = "Nytt meddelande"
        val body = data["body"] ?: ""
        showNotification(title, body)
    }
}

Registrering av tjänsten i manifestet

Tjänsten för mottagning av FCM-meddelanden måste registreras i AndroidManifest.xml med lämplig intent-filter. Lägga till service-tagg med INTERNET-behörighet och angivande av action. Utan registrering av tjänsten kommer meddelanden inte att levereras till applikationen i bakgrunden. För att visa notiser i Android 13+ krävs runtime-behörigheten 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>

Konfigurera FCM i iOS

FCM-integration i iOS kräver konfiguration både på Apple Push Notification Service (APNs) sida och i Firebase Console. Till skillnad från Android där FCM hanterar anslutningen direkt, använder FCM i iOS APNs som transportlager. Applikationen registrerar sig för att ta emot push-notiser via UIApplication.shared.registerForRemoteNotifications, och Firebase SDK fångar upp den mottagna device token och kopplar den till FCM Registration Token.

Konfigurera APNs och registrera för notiser

För att FCM ska fungera i iOS måste en APNs-nyckel eller ett certifikat laddas upp i Firebase Console. APNs-nyckel — är en modern autentiseringsmetod utan certifikat (rekommenderas av Apple). Nyckeln skapas i Apple Developer Portal i avsnittet Keys och laddas upp i Cloud Messaging-inställningarna i Firebase Console. Efter APNs-konfiguration begär applikationen tillstånd för notiser via UNUserNotificationCenter och registrerar sig via 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
    }
}

Bearbetning av inkommande notiser

För bearbetning av mottagna notiser implementeras UNUserNotificationCenter-delegaten. Metoden willPresent anropas när en notis tas emot medan applikationen är aktiv — här kan en anpassad in-app-notis visas eller systemets banner ignoreras. Metoden didReceive anropas när användaren klickar på notisen — här utförs navigering till motsvarande skärm. För data-meddelanden används MessagingDelegate-delegaten som tar emot payload vid mottagning av FCM-meddelande i bakgrunden.

Skicka meddelanden från servern

Server-side sändning av FCM-meddelanden utförs via HTTP v1 API Firebase Cloud Messaging eller det föråldrade Firebase Cloud Messaging API. HTTP v1 API är den rekommenderade metoden, använder OAuth 2.0-autentisering via Service Account och stöder alla moderna FCM-funktioner, inklusive leveransanalys och A/B-testning av notiser. Begäran skickas med POST-metoden till slutpunkten https://fcm.googleapis.com/v1/projects/{project_id}/messages:send.

Format för HTTP v1-begäran

Begärans brödtext innehåller ett JSON-objekt med information om meddelandet: target (token, ämne eller villkor), notification (för visning) och data (anpassad payload). Autentisering via Service Account JSON-nyckel som laddas i serverns miljövariabler. Åtkomsttoken genereras via google-auth-library-biblioteket. Google rekommenderar att använda Firebase Admin SDK för automatisk hantering av autentisering och återförsök.

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% rabatt", body: "På alla tjänster idag" },
    data: { screen: "promo", promoId: "324" },
    android: { priority: "high" },
    apns: { payload: { aps: { sound: "default" } } }
}

admin.messaging().send(message)
    .then(response => {
        console.log("Skickat framgångsrikt:", response)
    })
    .catch(error => {
        console.log("Skickningsfel:", error)
    })

Ämnen och massutskick

För att skicka notiser till en grupp användare stöder FCM prenumeration på ämnen. Ett ämne (topic) — är en namngiven kanal som klientapplikationen prenumererar på via FirebaseMessaging.getInstance().subscribeToTopic(). Servern kan skicka ett meddelande till ett ämne och det levereras till alla prenumererade enheter. Ämnen är lämpliga för nyhetsbrev, reklamnotiser och event-push. För mer precis segmentering används villkor (conditions) baserade på flera ämnen med logiska operatorer.

Vanliga frågor

Vad är skillnaden mellan FCM och APNs?

FCM fungerar på Android via Googles egen infrastruktur och använder på iOS APNs som transportprotokoll. FCM tillhandahåller ett enhetligt API för båda plattformarna, automatisk lagring av offline-meddelanden och leveransanalys, vilket saknas i rent APNs.

Kan man skicka FCM-meddelanden utan server?

Ja, via Firebase Console i avsnittet Cloud Messaging kan man manuellt skicka notiser till valda enheter, ämnen eller målgruppssegment. Funktionen passar för testning och enstaka utskick, men ersätter inte serverintegration för produktionsapplikationer.

Vad gör jag om enhetstoken har ändrats?

Prenumerera på token-uppdateringar via onNewToken i FirebaseMessagingService (Android) eller MessagingDelegate (iOS). När token ändras, skicka den nya token till servern och ta bort den gamla. Servern bör uppdatera databasen och sluta försöka skicka till den föråldrade token.

Hur hanterar FCM offline-enheter?

FCM lagrar meddelandet i kö upp till 28 dagar och levererar det när anslutningen återställs. För notification-meddelanden komprimeras endast det sista meddelandet för varje komprimeringsgrupp. Data-meddelanden lagras separat och levereras i sändningsordning utan komprimering.

Hur mycket kostar Firebase Cloud Messaging?

FCM är helt gratis utan begränsning av antalet meddelanden. Användning av FCM faktureras inte inom varken Spark-planen eller Blaze-planen. Begränsningar gäller endast payload-storleken: upp till 4 KB för notification-meddelanden och upp till 2 KB för data-meddelanden.

Sammanfattning

  • Firebase Cloud Messaging — plattformsoberoende push-notistjänst från Google som stöder Android, iOS, Web och Unity via ett enhetligt API.
  • FCM-arkitekturen består av leverantörsservern, Firebase-infrastrukturen och klientapplikationen och säkerställer tillförlitlig meddelandeleverans via Googles globala nätverk.
  • Tre meddelandetyper — notification (automatisk visning), data (godtycklig payload utan UI) och kombinerade (båda typerna i ett meddelande).
  • FCM i Android fungerar via FirebaseMessagingService med egen anslutning, och i iOS använder det APNs som transport med token-fångst via MessagingDelegate.
  • HTTP v1 API rekommenderas för server-side sändning med OAuth 2.0-autentisering via Service Account och stöd för leveransanalys.
  • Ämnen möjliggör sändning av meddelanden till prenumerantgrupper, och villkor (conditions) möjliggör kombination av flera ämnen för precis segmentering.
  • FCM är gratis utan begränsning av antalet meddelanden, med lagring av offline-meddelanden upp till 28 dagar och maximal payload-storlek 4 KB.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också