FCM — vad är det, principer för Firebase Cloud Messaging inom utveckling

Författare: IT Sectr Publicerad: 2026-03-19 Lästid: 8 min

FCM (Firebase Cloud Messaging) är en plattformsoberoende tjänst från Google för leverans av push-notifikationer och överföring av data mellan server och mobila applikationer. Den stödjer Android, iOS och webbplattformar genom ett enhetligt API. Enligt Firebase Documentation behandlar FCM över 1 miljard meddelanden dagligen världen över.

Huvudpunkter

  • FCM — plattformsoberoende tjänst från Google för att skicka push-notifikationer och data
  • Arkitektur — klienten får en registreringstoken, servern skickar meddelanden via Firebase Connection Server
  • Meddelandetyper — notification (automatisk visning) och data (fullständig bearbetning i appen)
  • Leverans — FCM använder permanent anslutning eller prioritetsköer för leveransgaranti
  • Integration — anslutning via Firebase SDK, konfiguration av google-services.json och serverkonfiguration

Vad är FCM?

Firebase Cloud Messaging (FCM) är en molntjänst från Google som tillhandahåller pålitlig leverans av push-notifikationer och datameddelanden till mobila enheter. Tidigare känd som Google Cloud Messaging (GCM), har FCM blivit det primära verktyget för plattformsoberoende notifikationer inom Firebase-ekosystemet.

FCM väljer automatiskt den optimala leveranskanalen beroende på plattform: på Android använder den sin egen FCM-anslutning, på iOS — APNS (via FCM-gatewayen). Utvecklaren behöver inte implementera två olika integrationer — FCM tar över routing.

Tjänsten tillhandahåller ett enhetligt REST API och Admin SDK för att skicka meddelanden. Detta gör det möjligt att skicka notifikationer från serversidan utan att vara bunden till en specifik mottagarplattform.

Viktiga funktioner i FCM

FCM stödjer flera leveranslägen: ett meddelande till en specifik enhet, gruppsändning per ämne (topic) och segmentsändning per villkor (condition). Schemaläggning av sändning och A/B-testning av notifikationsinnehåll är också tillgängligt.

Hur fungerar Firebase Cloud Messaging?

FCM:s arkitektur bygger på tre komponenter: klientapplikationen, Firebase Connection Server och applikationsservern (app server). Klienten registrerar sig i FCM vid start och får en unik registreringstoken — en sträng som identifierar enheten för denna applikation.

Applikationsservern skickar en begäran till FCM REST API och anger mottagarens token eller ämne. Firebase Connection Server levererar meddelandet via en permanent XMPP-anslutning eller HTTP-begäran. Om enheten är offline — köas meddelandet och levereras när anslutningen återställs.

FCM garanterar leverans med hjälp av prioritetsköer och en mekanism för mottagningsbekräftelse. På Android lagras meddelandet upp till 28 dagar i kön, på iOS — upp till 4 veckor (via APNS). Efter utgången raderas meddelandet utan notifiering.

Livscykel för FCM-token

Registreringstoken kan ändras i flera fall: vid återställning av applikationsdata, vid uppdatering till en ny version eller vid rensning av cache. Applikationen måste implementera FirebaseMessagingService.onNewToken för att hantera tokenuppdatering och synkronisering med servern.

Typer av FCM-meddelanden

FCM stödjer två typer av nyttolast: notification och data. Varje typ avgör hur och när meddelandet bearbetas på mottagarens enhet.

ParameterNotificationData
Automatisk visningJa, om appen är i bakgrundenNej, endast i appen
BearbetningSystem — i bakgrunden; app — i förgrundenAlltid i appen (onMessageReceived)
Maximal storlek4 KB4 KB
Anpassade nycklarBegränsade till fördefinierade fältValfria nyckel-värde-par
Kräver CollapseKeyValfrittValfritt för gruppering

I praktiken rekommenderas det att använda data-meddelanden om applikationen behöver fullständig bearbetning av notifikationen i onMessageReceived. Notification-meddelanden är lämpliga för enkla scenarier där systemvisning är tillräcklig.

FCM och APNS: jämförelse av tillvägagångssätt

FCM och APNS är de två huvudsakliga push-leveranstjänsterna. FCM fungerar som en plattformsoberoende gateway, APNS — endast för Apple-ekosystemet. Deras viktigaste skillnader ligger i arkitektur, certifikatkrav och routingsmekanismer.

  • Plattformsoberoende — FCM stödjer Android, iOS, Web; APNS endast iOS, macOS, watchOS, tvOS
  • Autentisering — FCM använder Server Key eller OAuth 2.0; APNS — certifikat eller Token-based (p8 key)
  • Meddelandeprioritet — FCM har normal/high; APNS — immediate/power-efficient consideration
  • Ämnen — FCM stödjer prenumeration på ämnen direkt; APNS kräver serverlogik

Valet mellan FCM och direkt APNS beror på projektarkitekturen. För plattformsoberoende applikationer är FCM det optimala valet. För iOS-endast projekt är direkt arbete med APNS via HTTP/2 API acceptabelt.

När välja FCM istället för direkt APNS

FCM är motiverat när projektet använder både Android och iOS samtidigt, liksom vid behov av Firebase-analys, A/B-testning av notifikationer eller ämnen utan serverlogik. Direkt APNS föredras för iOS-endast applikationer med minimala beroenden och strikta krav på leveransfördröjning.

Integration av FCM i Android

För att ansluta FCM till en Android-applikation måste du lägga till Firebase SDK och konfigurera google-services.json i projektets rot. Efter registrering av token är applikationen redo att ta emot meddelanden via FirebaseMessagingService.

kotlin
// 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)
        }
    }
}

Efter konfiguration får applikationen automatiskt FCM-token vid första start. Token måste skickas till applikationsservern för efterföljande sändning av notifikationer till denna enhet.

Konfiguration av kanal för FCM-notifikationer

På Android 8+ måste en NotificationChannel skapas innan en FCM-notifikation med automatisk visning skickas. FCM notification-meddelanden använder kanalen med standard-ID, men det rekommenderas att skapa en egen kanal via FirebaseMessagingService vid mottagande av första meddelandet. Data-meddelanden kräver ingen kanal — applikationen bestämmer själv hur och när notifikationen ska visas.

Integration av FCM i iOS

På iOS fungerar FCM som en mellanhand mellan applikationsservern och APNS. Firebase tar emot meddelandet från servern, paketerar det i APNS-format och skickar det via Apple-gatewayen. Utvecklaren måste konfigurera APNS-nyckeln eller certifikatet i Firebase-konsolen.

swift
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")
    }
}

På iOS sker registrering i APNS asynkront. FCM SDK tar automatiskt emot APNS-token och vidarebefordrar den till Firebase-servern. didReceiveRegistrationToken utlöses när en ny FCM-token tas emot, som kombinerar APNS-token med projektidentifikatorn.

Kontroll av leveransstatus

FCM tillhandahåller Firebase-konsolen för övervakning av leverans: antal skickade, mottagna och visade notifikationer. En statusåterkoppling via Firebase Cloud Functions är också tillgänglig för att spåra leveransfel på serversidan. Viktiga mått: impressions (visningar) och opens (öppningar).

Bästa praxis för FCM

När du arbetar med FCM är det viktigt att välja rätt meddelandetyp för varje scenario. För enkla notifikationer med automatisk visning, använd notification-meddelanden. För fall där applikationen behöver bearbeta data innan visning — data-meddelanden. Den blandade typen (notification + data) rekommenderas endast om data behövs för analys, inte för att ändra notifikationsinnehållet.

Hantera tokens centraliserat. Lagra aktuella tokens på servern i en tabell kopplad till användare och plattform. Implementera en mekanism för rensning av föråldrade tokens: vid fel NotRegistered eller InvalidRegistration, ta bort token från databasen. Tokens ändras sällan, men deras rensning är ett obligatoriskt element i FCM-stöd.

Använd kollapsnycklar (collapseKey) för att gruppera meddelanden. Om du skickar flera notifikationer av samma typ (till exempel ”valutakursuppdatering”), ställ in samma collapseKey. FCM levererar endast det sista meddelandet i gruppen, vilket minskar enhetens belastning och inte irriterar användaren med en flod av notifikationer.

Övervaka leverans via Firebase Console och Cloud Functions. FCM-analys visar antalet skickade, mottagna och visade notifikationer. Om visningsprocenten är under 70 % — kontrollera kanalinställningarna på Android och behörigheterna på iOS. Låg leverans är ofta kopplad till inaktiverade kanaler eller notifikationsförbud. För det femte: använd Firebase A/B-testning för att optimera notifikationstext och sändningstid — detta ökar öppningskonverteringen med 15–25 % enligt Firebase-data.

Vanliga frågor

Vad är skillnaden mellan FCM och GCM?

FCM är en evolutionär uppdatering av GCM (Google Cloud Messaging). FCM erbjuder förenklad konfiguration via Firebase Console, inbyggd analys, ämnen och stöd för Web Push. GCM stängdes officiellt av i april 2019, alla projekt måste migreras till FCM.

Hur många meddelanden kan skickas via FCM gratis?

Firebase Cloud Messaging är en gratis tjänst utan begränsning av antalet meddelanden. Avgift tas endast ut för användning av andra Firebase-tjänster som Cloud Functions eller Firestore. FCM kräver ingen Spark- eller Blaze-prenumeration för grundläggande sändning av notifikationer.

Varför kan FCM-token ändras?

FCM-token ändras vid: återställning av appen från säkerhetskopiering, rensning av appdata, ominstallation, uppdatering till en ny version med ändrat Sender ID. Bearbeta alltid onNewToken i FirebaseMessagingService för att skicka den nya token till servern.

Fungerar FCM i Kina?

Google FCM är blockerat på Kinas territorium. För leverans av notifikationer i Kina används alternativa tjänster: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. För plattformsoberoende leverans används multi-leverantörstjänster som Getui.

Hur kontrollerar jag att FCM är korrekt konfigurerat?

Använd den inbyggda Firebase-konsolen: välj ”Cloud Messaging” — ”Send Test Message”. Ange testtoken och skicka ett notification-meddelande. En notifikation bör visas på enheten. Du kan också övervaka FirebaseMessagingService.onMessageReceived-loggar.

Sammanfattning

  • FCM — plattformsoberoende molntjänst från Google för leverans av push-notifikationer och data
  • Token — unik enhetsidentifierare som används för riktad meddelandesändning
  • Notification — meddelandetyp med automatisk systemvisning i bakgrundsläge
  • Data — meddelandetyp med full nyttolast som bearbetas endast i applikationen
  • Ämnen — mekanism för gruppsändning via prenumeration på ämnen utan lagring av tokens på servern
  • APNS-gateway — för iOS fungerar FCM som mellanhand och överför meddelanden via APNS
  • Gratis — FCM tar inte betalt för antalet skickade meddelanden

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å