Push-notiser är meddelanden som skickas från servern till en mobil enhet även när appen är stängd. Enligt data från Google Firebase, 2024 bearbetas push-notiser via specialiserade tjänster — FCM på Android och APNS på iOS, som stöder realtidsleverans till miljontals enheter samtidigt. De har blivit en integrerad del av användarupplevelsen i moderna mobilappar.
Huvudpunkter
Push-notiser är korta meddelanden som appservern skickar till användarens enhet utan dennes uttryckliga begäran. De visas som banners, märken på ikonen eller ljudsignaler, drar användarens uppmärksamhet till appen och informerar om viktiga händelser.
En push-notis består av en rubrik, meddelandetext och valfria data (payload). Till skillnad från SMS är push-notiser gratis för användaren och levereras via infrastruktur för molntjänster — FCM för Android och APNS för iOS. Huvudsyftena med push-notiser: öka engagemang, informera om händelser och få tillbaka användaren till appen.
Användningsstatistik visar att korrekt konfigurerade push-notiser ökar appens retention med 30-60%. Överdriven frekvens leder dock till avprenumeration — över 60% av användarna stänger av notiser om de skickas mer än tre gånger om dagen.
Push-systemet består av tre komponenter: appservern (app server), plattformstjänsten (FCM/APNS) och klientappen på enheten. Servern skickar en begäran till plattformstjänsten, som levererar notisen till målenheten via en permanent anslutning med operativsystemet.
Leveransmekanismen för push-notiser baseras på en permanent anslutning mellan enheten och plattformstjänsten. Operativsystemet upprätthåller en krypterad kommunikationskanal genom vilken alla push-meddelanden passerar.
Vid första start begär appen tillstånd att skicka notiser och får en unik enhetstoken från FCM eller APNS. Denna token är en sträng på upp till 4 KB som unikt identifierar appinstansen. Token ändras vid ominstallation av appen eller återställning av enheten från en säkerhetskopia.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
Appservern skickar en HTTP-begäran till FCM API eller APNS API, med angivelse av måltoken, rubrik, brödtext och ytterligare data. Plattformstjänsten svarar med leveransstatus: success, invalid token (enheten har tagit bort appen) eller rate-limited (sändningsfrekvensen överskriden).
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "skicka token till din egen server",
body: "Du har ett nytt meddelande!"
}
})
})
Valet mellan FCM och APNS beror på målplattformen. FCM stöder Android och iOS, APNS — endast Apples ekosystem. Låt oss titta på de viktigaste skillnaderna som är viktiga för utveckling av cross-platform mobilappar.
FCM är Googles tjänst som fungerar ovanpå Google Play Services. Den stöder två leveransscheman: notiser med automatisk visning (display notifications) och datanotiser som appen bearbetar själv. FCM är gratis och har inga begränsningar för antalet skickade meddelanden.
APNS är Apples tjänst med stöd för multimediabilagor (bilder, video, ljud) upp till 10 MB. För sändning via APNS krävs ett TLS-certifikat eller autentiseringsnyckel. APNS begränsar sändningsfrekvensen till en enhet — inte mer än 150 notiser per minut, varefter rate limiting aktiveras.
| Egenskap | FCM | APNS |
|---|---|---|
| Plattformar | Android, iOS, Web | iOS, macOS, watchOS |
| Krav | Google Play Services | Apple Developer Program |
| Media | upp till 4 KB (data) | upp till 10 MB (bilagor) |
| Prioritet | normal/high | immediate/power-saving |
| Kostnad | gratis | gratis (konto krävs) |
Push-notiser klassificeras efter visningssätt och syfte. Att förstå typerna hjälper till att välja rätt strategi för varje interaktionsscenario med användaren.
Den vanligaste typen — visad notis med rubrik och brödtext. Operativsystemet visar den automatiskt i systemfältet, på låsskärmen och som en banner. Utvecklaren kan konfigurera ljud, vibration, ikonmärke och åtgärdsknappar för direkta handlingar (svara, öppna, avvisa).
Datanotiser innehåller endast payload utan visuell visning. Appen bearbetar dem i bakgrunden: synkroniserar data, uppdaterar cache eller startar nedladdning. På Android levereras datanotiser garanterat, på iOS — endast när appen är aktiv eller via background fetch.
Moderna mobila operativsystem stöder utökade och medianotiser med bilder, GIF, video och ljud. På iOS implementeras detta via UNNotificationAttachment, på Android — via BigPictureStyle och InboxStyle för anpassning av notisens utseende i systemfältet.
Tysta notiser visas inte för användaren och används för bakgrundssynkronisering. På iOS har de hög prioritet för uppgifter som att uppdatera data innan appen öppnas. Android behandlar dem som datanotiser med lägsta prioritet.
Konfigurering av push-notiser kräver åtgärder på infrastrukturnivå, serversidan och klientkoden. Låt oss titta på den typiska processen för ett cross-platform mobilprojekt.
För Android måste du skapa ett projekt i Firebase Console, lägga till google-services.json i projektet och konfigurera FirebaseMessagingService. Enhetstoken erhålls via FirebaseInstanceId eller FirebaseMessaging.getInstance().token, och skickas sedan till servern via API vid första start eller vid ändring.
För iOS krävs en prenumeration på Apple Developer Program, skapande av ett push-certifikat eller APNS-nyckel i Developer Portal och aktivering av Capability Push Notifications i Xcode. Registrering för notiser görs via UIApplication.shared.registerForRemoteNotifications med mottagning av deviceToken i AppDelegate.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// skicka token till din egen server
}
}
På serversidan skickas push-notiser via REST API eller Admin SDK. För FCM används Firebase Admin SDK (tillgänglig för Node.js, Java, Python, Go), för APNS — pusher-bibliotek (pushy för Java, apn2 för Node.js). Det rekommenderas att lagra tokens i databasen med en tidsstämpel för senaste uppdatering.
Säkerheten för push-notiser är kritisk eftersom konfidentiell data kan överföras via dem. Båda plattformarna erbjuder grundläggande skyddsmekanismer, men utvecklaren måste använda dem korrekt.
Payload i en push-notis kan innehålla personuppgifter om användare: namn, transaktionsbelopp, länkar till meddelanden. Även om kommunikationskanalen mellan FCM/APNS och enheten är krypterad, kan data fångas upp på appnivå vid avlyssning av notisen av tredjepartsprogramvara. Det rekommenderas att kryptera känslig payload på servern med AES-256-algoritmen och dekryptera den på enheten med en nyckel lagrad i Keychain (iOS) eller EncryptedSharedPreferences (Android).
Enhetstoken är en sessionidentifierare som kan äventyras vid intrång på enheten eller avlyssning av trafik. Appservern måste kontrollera tokens före sändning: jämföra dem med databasen, spåra inaktiva tokens och ta bort dem vid upprepade InvalidToken-fel. FCM och APNS returnerar status InvalidRegistration för ogiltiga tokens — ignorera inte detta.
Utan frekvenskontroll kan push-notiser bli ett spamverktyg som irriterar användare och minskar retention. Sätt gränser på servern: inte mer än 5 notiser per timme till en användare och inte mer än 3 identiska meddelanden. För transaktionsnotiser (orderbekräftelse, lösenordsändring) kan gränserna vara högre — upp till 10 per timme, eftersom de bär kritiskt viktig information. Använd rate limiting på API-nivå för sändning så att en angripare inte kan utlösa massutskick via din server.
Vanliga frågor
Ja, direktanslutning till APNS stöds inte på Android — för enheter utan Google Play Services används alternativ som Huawei Mobile Services (HMS) och egna WebSocket-anslutningar. FCM förblir dock standard för de flesta appar tack vare sin kostnadsfrihet och tillförlitlighet.
FCM och APNS sparar den senaste notisen på sina servrar och levererar den när anslutningen återställs. På varje enhet sparas endast den senaste notisen från varje app, så vid långvarig frånvaro av nätverk går mellanliggande meddelanden förlorade.
De vanligaste orsakerna är utgånget push-certifikat APNS (giltigt 1 år), ogiltig enhetstoken, avstängda notiser i inställningar eller aktiverat energisparläge. Kontrollera certifikatet i Apple Developer Console och se till att appen begär tillstånd via UNUserNotificationCenter.
På Android använder du PendingIntent i NotificationCompat.Builder med spårning av öppning via Intent. På iOS — metoden UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). FCM tillhandahåller rapporter om leverans och öppningar för varje skickad notis.
Marginellt — push-notiser upprätthåller ingen permanent anslutning; operativsystemet använder en gemensam systemkanal för alla appar, vilket minimerar den totala energiförbrukningen. Frekvent sändning (var 5:e minut) förbrukar mer energi för att väcka enheten och lämna viloläge. Tysta notiser på iOS förbrukar mer energi på grund av aktivering av appen i bakgrunden för bearbetning av mottagen data.
Sammanfattning
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.
Läs också