Push notifikace jsou zprávy odesílané serverem na mobilní zařízení i při zavřené aplikaci. Podle údajů Google Firebase, 2024 jsou Push notifikace zpracovávány prostřednictvím specializovaných služeb — FCM na Androidu a APNS na iOS, které podporují doručování v reálném čase milionům zařízení současně. Staly se nedílnou součástí uživatelského zážitku v moderních mobilních aplikacích.
Hlavní body
Push notifikace jsou krátké zprávy, které server aplikace odesílá na zařízení uživatele bez jeho výslovného požadavku. Zobrazují se jako bannery, odznaky na ikoně nebo zvukové signály, přitahují pozornost uživatele k aplikaci a informují o důležitých událostech.
Push notifikace se skládá z nadpisu, těla zprávy a volitelných dat (payload). Na rozdíl od SMS jsou Push notifikace pro uživatele zdarma a jsou doručovány prostřednictvím infrastruktury cloudových služeb — FCM pro Android a APNS pro iOS. Hlavní cíle Push notifikací: zvýšení zapojení, informování o událostech a přivedení uživatele zpět do aplikace.
Statistiky používání ukazují, že správně nastavené Push notifikace zvyšují retenci aplikace o 30-60%. Nadměrná frekvence notifikací však vede k odhlášení — více než 60% uživatelů vypíná notifikace, pokud jsou odesílány více než třikrát denně.
Push systém zahrnuje tři komponenty: server aplikace (app server), platformovou službu (FCM/APNS) a klientskou aplikaci na zařízení. Server odesílá požadavek platformové službě, která doručuje notifikaci na cílové zařízení prostřednictvím trvalého připojení s operačním systémem.
Mechanismus doručování Push notifikací je založen na trvalém připojení mezi zařízením a platformovou službou. Operační systém udržuje šifrovaný komunikační kanál, přes který procházejí všechny Push zprávy.
Při prvním spuštění aplikace požádá o povolení k odesílání notifikací a obdrží jedinečný token zařízení od FCM nebo APNS. Tento token je řetězec o délce až 4 KB, který jednoznačně identifikuje instanci aplikace. Token se mění při přeinstalování aplikace nebo obnovení zařízení ze zálohy.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
Server aplikace odesílá HTTP požadavek na FCM API nebo APNS API, s uvedením cílového tokenu, nadpisu, těla a dalších dat. Platformová služba odpovídá stavem doručení: success, invalid token (zařízení odstranilo aplikaci) nebo rate-limited (překročena frekvence odesílání).
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: "odeslat token na svůj server",
body: "Máte nové oznámení!"
}
})
})
Výběr mezi FCM a APNS závisí na cílové platformě. FCM podporuje Android a iOS, APNS — pouze ekosystém Apple. Podívejme se na klíčové rozdíly důležité pro vývoj cross-platform mobilních aplikací.
FCM je služba Google běžící na Google Play Services. Podporuje dvě schémata doručení: notifikace s automatickým zobrazením (display notifications) a datové notifikace, které aplikace zpracovává sama. FCM je zdarma a nemá omezení na počet odeslaných zpráv.
APNS je služba Apple s podporou multimediálních příloh (obrázky, video, audio) do velikosti 10 MB. Pro odesílání přes APNS je vyžadován TLS certifikát nebo autentizační klíč. APNS omezuje frekvenci odesílání na jedno zařízení — ne více než 150 notifikací za minutu, poté se aktivuje rate limiting.
| Vlastnost | FCM | APNS |
|---|---|---|
| Platformy | Android, iOS, Web | iOS, macOS, watchOS |
| Požadavky | Google Play Services | Apple Developer Program |
| Média | až 4 KB (data) | až 10 MB (přílohy) |
| Priorita | normal/high | immediate/power-saving |
| Cena | zdarma | zdarma (účet vyžadován) |
Push notifikace se klasifikují podle způsobu zobrazení a účelu. Pochopení typů pomáhá vybrat správnou strategii pro každý scénář interakce s uživatelem.
Nejčastější typ — zobrazená notifikace s nadpisem a tělem. Operační systém ji automaticky zobrazí v systémové liště, na zamykací obrazovce a jako banner. Vývojář může nastavit zvuk, vibrace, odznak na ikoně a tlačítka pro přímé akce (odpovědět, otevřít, odmítnout).
Datové notifikace obsahují pouze payload bez vizuálního zobrazení. Aplikace je zpracovává na pozadí: synchronizuje data, aktualizuje mezipaměť nebo spouští stahování. Na Androidu jsou datové notifikace doručovány garantovaně, na iOS — pouze při aktivní aplikaci nebo přes background fetch.
Moderní mobilní operační systémy podporují rozšířené a multimediální notifikace s obrázky, GIF, videem a audiem. Na iOS je to implementováno přes UNNotificationAttachment, na Androidu — přes BigPictureStyle a InboxStyle pro přizpůsobení vzhledu notifikace v systémové liště.
Tiché notifikace se uživateli nezobrazují a používají se pro synchronizaci na pozadí. Na iOS mají vysokou prioritu pro úkoly jako aktualizace dat před otevřením aplikace. Android je považuje za datové notifikace s minimální prioritou.
Nastavení Push notifikací vyžaduje opatření na úrovni infrastruktury, serverové části a klientského kódu. Podívejme se na typický proces pro cross-platform mobilní projekt.
Pro Android je třeba vytvořit projekt v Firebase Console, přidat google-services.json do projektu a nakonfigurovat FirebaseMessagingService. Token zařízení se získává přes FirebaseInstanceId nebo FirebaseMessaging.getInstance().token, poté se odesílá na server přes API při prvním spuštění nebo při jeho změně.
Pro iOS je vyžadováno předplatné Apple Developer Program, vytvoření Push certifikátu nebo APNS klíče v Developer Portal a povolení Capability Push Notifications v Xcode. Registrace pro notifikace se provádí přes UIApplication.shared.registerForRemoteNotifications s obdržením deviceToken v 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()
// odeslat token na svůj server
}
}
Na serverové straně jsou Push notifikace odesílány přes REST API nebo Admin SDK. Pro FCM se používá Firebase Admin SDK (dostupný pro Node.js, Java, Python, Go), pro APNS — pusher knihovny (pushy pro Java, apn2 pro Node.js). Doporučuje se ukládat tokeny v databázi s časovým razítkem poslední aktualizace.
Bezpečnost Push notifikací je kriticky důležitá, protože přes ně mohou být přenášena důvěrná data. Obě platformy poskytují základní ochranné mechanismy, ale vývojář je musí správně používat.
Payload Push notifikace může obsahovat osobní údaje uživatelů: jména, částky transakcí, odkazy na zprávy. I když je komunikační kanál mezi FCM/APNS a zařízením šifrován, data mohou být zachycena na úrovni aplikace při zachycení notifikace softwarem třetí strany. Doporučuje se šifrovat citlivý payload na serveru algoritmem AES-256 a dešifrovat jej na zařízení pomocí klíče uloženého v Keychain (iOS) nebo EncryptedSharedPreferences (Android).
Token zařízení je identifikátor relace, který může být kompromitován při napadení zařízení nebo zachycení provozu. Server aplikace musí tokeny před odesláním kontrolovat: porovnávat je s databází, sledovat neaktivní tokeny a odstraňovat je při opakovaných chybách InvalidToken. FCM a APNS vracejí stav InvalidRegistration pro neplatné tokeny — neignorujte jej.
Bez kontroly frekvence se Push notifikace mohou stát nástrojem spamu, který obtěžuje uživatele a snižuje retenci. Nastavte na serveru limity: ne více než 5 notifikací za hodinu jednomu uživateli a ne více než 3 stejné zprávy. Pro transakční notifikace (potvrzení objednávky, změna hesla) mohou být limity vyšší — až 10 za hodinu, protože nesou kriticky důležité informace. Použijte rate limiting na úrovni API odesílání, aby útočník nemohl spustit hromadné rozesílání přes váš server.
Často kladené otázky
Ano, přímé připojení k APNS není na Androidu podporováno — pro zařízení bez Google Play Services se používají alternativy jako Huawei Mobile Services (HMS) a vlastní WebSocket připojení. FCM však zůstává standardem pro většinu aplikací díky své bezplatnosti a spolehlivosti.
FCM a APNS ukládají poslední notifikaci na své servery a doručí ji při obnovení připojení. Na každém zařízení je uložena pouze poslední notifikace od každé aplikace, takže při delší absenci sítě se mezilehlé zprávy ztrácejí.
Nejčastější příčiny jsou — prošlý Push certifikát APNS (platný 1 rok), neplatný token zařízení, vypnuté notifikace v nastavení nebo zapnutý režim úspory energie. Zkontrolujte certifikát v Apple Developer Console a ujistěte se, že aplikace žádá o povolení přes UNUserNotificationCenter.
Na Androidu použijte PendingIntent v NotificationCompat.Builder se sledováním otevření přes Intent. Na iOS — metodu UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). FCM poskytuje zprávy o doručení a otevření pro každou odeslanou notifikaci.
Nepatrně — Push notifikace neudržují trvalé připojení; operační systém používá jednotný systémový kanál pro všechny aplikace, což minimalizuje celkovou spotřebu energie. Časté odesílání (každých 5 minut) spotřebovává více energie na probuzení zařízení a opuštění režimu spánku. Tiché notifikace na iOS spotřebovávají více energie kvůli aktivaci aplikace na pozadí pro zpracování přijatých dat.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také