Push oznámení jsou jedním z nejúčinnějších způsobů interakce s uživatelem po instalaci aplikace. Umožňují informovat o nové zprávě, slevě, aktualizaci obsahu nebo připomenout opuštěný košík. Push oznámení (push notifications) fungují prostřednictvím cloudových služeb: Firebase Cloud Messaging (FCM) na Androidu a Apple Push Notification Service (APNS) na iOS. V tomto článku rozebereme architekturu oznámení, jejich typy a proces nastavení pro obě platformy. Více informací — v oficiální dokumentaci FCM.
Hlavní body
Push oznámení je zpráva, kterou server odesílá na mobilní zařízení bez požadavku z aplikace. Zpráva prochází cloudovou službou (FCM nebo APNS), která ji doručí na zařízení, i když je aplikace zavřená. Oznámení se dělí na dva typy: zobrazovací oznámení (zobrazují se uživateli) a datová oznámení (předávají data pro zpracování na pozadí).
Architektura push oznámení zahrnuje tři komponenty: (1) aplikační server — odesílá požadavek na FCM/APNS; (2) cloudová služba — směruje oznámení; (3) klientská aplikace — přijímá a zpracovává oznámení. Server musí znát Device Token zařízení, aby mu mohl odeslat oznámení konkrétně. Pro hromadné odesílání se používá Topic Subscription — přihlášení zařízení k tematickým kanálům (novinky, akce, počasí).
Na každém zařízení jsou oznámení zpracovávána operačním systémem: Android — přes NotificationManager a NotificationChannel, iOS — přes UNUserNotificationCenter. Uživatel může nakonfigurovat chování oznámení pro každý kanál: povolit zvuk, bannery, zobrazení na uzamčené obrazovce nebo úplně vypnout. Správná konfigurace kanálů zvyšuje zapojení a snižuje počet odhlášení.
Ve společnosti IT Sectr navrhujeme systém push oznámení s ohledem na platformová specifika od samého začátku. Klíčová rozhodnutí: výběr mezi FCM a přímým APNS, formát payloadu, frekvence odesílání a mechanika předplatného. To pomáhá vyhnout se situacím, kdy oznámení nedorazí nebo jsou blokována systémem.
Firebase Cloud Messaging (FCM) je multiplatformní služba Google pro doručování oznámení. FCM podporuje Android, iOS, Web a Flutter. Na iOS FCM funguje přes APNS: FCM odešle požadavek do APNS, který doručí oznámení na zařízení. Výhody FCM: jednotné API pro obě platformy, vestavěná analytika, A/B testování, témata a segmenty publika.
Apple Push Notification Service (APNS) je nativní služba Apple. Funguje pouze na zařízeních Apple (iOS, macOS, watchOS, tvOS). Vyžaduje přímou autorizaci přes TLS certifikát nebo token (JWT). APNS poskytuje minimální zpoždění doručení a přímou integraci s iOS funkcemi: PushKit, Notification Service Extension a kritická upozornění.
Volba mezi FCM a APNS závisí na architektuře projektu. Pokud je aplikace pouze pro iOS — APNS poskytuje větší kontrolu. Pokud je multiplatformní — FCM je pohodlnější s jednotným API. Mnoho projektů používá FCM jako primární službu a na iOS navíc konfiguruje PushKit pro VoIP. Hybridní přístup umožňuje získat to nejlepší z obou systémů.
| Vlastnost | FCM | APNS |
|---|---|---|
| Platformy | Android, iOS, Web, Flutter | iOS, macOS, watchOS, tvOS |
| Autorizace | Server Key (Firebase Console) | TLS certifikát nebo JWT token |
| Maximální payload | 4 KB (data), 2 KB (notification) | 4 KB |
| Témata | Vestavěná (Topic Messaging) | Ne (implementováno na straně serveru) |
| Silent Push | Podporováno | Podporováno (content-available) |
| PushKit | Ne | Ano (VoIP, živé aktivity) |
| Analytika | Firebase Analytics | Žádná vestavěná |
| Doručení na vypnutém zařízení | Omezené (závisí na výrobci) | Ano, přes PushKit |
Rich Notification je oznámení obsahující nejen text, ale také multimediální obsah: obrázky, videa, audio a tlačítka akcí. Na Androidu je implementováno pomocí stylů NotificationCompat: BigPictureStyle (velký obrázek), BigTextStyle (sbalený/rozbalený text), InboxStyle (seznam zpráv), MediaStyle (ovládání přehrávání). Na iOS se používá Notification Content Extension — samostatný cíl s vlastním UI pro rozbalené oznámení.
Silent Push (content-available na iOS) je oznámení doručené bez zobrazení uživateli. Je určeno pro aktualizaci dat na pozadí: synchronizace obsahu, přednačítání, aktualizace widgetů. Na iOS Silent Push vyžaduje povolení Background Modes → Remote notifications. Na Androidu se pro zpracování oznámení na pozadí používá FirebaseMessagingService s onMessageReceived. Důležité: na iOS má Silent Push omezení frekvence a nezaručuje doručení, pokud aplikace není v popředí.
Interactive Notification umožňuje uživateli provést akci bez otevření aplikace. Na Androidu jsou to tlačítka (Action) v oznámení: "Odpovědět", "Schválit", "Odmítnout". Akce jsou zpracovávány přes PendingIntent, který spouští BroadcastReceiver nebo Service. Na iOS je Notification Action registrována přes UNNotificationAction a UNNotificationCategory. Tlačítka mohou být foreground (otevře aplikaci), background (provede na pozadí) nebo destructive (nevratná akce — smazat, blokovat).
Notification Content Extension (iOS) — vlastní view controller pro zobrazení rozšířeného obsahu oznámení při dlouhém stisku nebo 3D Touch. Notification Service Extension (iOS) — middleware pro úpravu obsahu oznámení před zobrazením: dešifrování E2E zpráv, načítání obrázků, obfuskace důvěrných dat. Na Androidu neexistují přímé analogy — všechny úpravy se provádějí v FirebaseMessagingService.
Pro Android je nutné: (1) přidat Firebase SDK do projektu (google-services.json); (2) vytvořit NotificationChannel (Android 8+) pro každou kategorii oznámení; (3) implementovat FirebaseMessagingService pro příjem tokenů a příchozích zpráv. Notification Channel je povinný — bez něj se oznámení na Androidu 8+ nezobrazí. Kanály mají prioritu (IMPORTANCE_HIGH — zvuk + vyskakovací okno, IMPORTANCE_LOW — bez zvuku) a uživatel je může konfigurovat v systémových nastaveních.
Pro iOS je nutné: (1) povolit schopnost Push Notifications v Xcode; (2) nakonfigurovat APNS klíč na Apple Developer Portal; (3) požádat o autorizaci přes UNUserNotificationCenter.requestAuthorization — toto je systémový dialog, který se zobrazí jednou. Odpověď uživatele je kritická: pokud není uděleno povolení, oznámení nebudou doručována. Doporučuje se uživateli vysvětlit, proč jsou oznámení potřeba, před zobrazením systémového dialogu (pre-permission prompt).
Device Token (iOS) a Registration Token (Android) jsou jedinečné identifikátory zařízení pro push oznámení. Token je generován při prvním spuštění aplikace a může se změnit: při přeinstalaci, vymazání dat, resetování nastavení soukromí. Server musí tokeny pravidelně aktualizovat. Firebase poskytuje pohodlné API pro správu tokenů přes onNewToken a také panel pro testovací odesílání oznámení (Firebase Console → Cloud Messaging).
Topic Subscription je jedním z nejúčinnějších mechanismů FCM. Zařízení se přihlásí k tématu (např. "news", "promo_users_ios") a server odesílá oznámení podle tématu bez nutnosti ukládat seznam tokenů. Firebase Topics podporuje až milion odběratelů na téma a podmíněné odesílání (Condition) pomocí vyjadřovacího jazyka: "'news' in topics && ('US' in topics || 'UK' in topics)".
Notification Payload je JSON struktura odesílaná přes FCM/APNS. Pro FCM: zvlášť notification (viditelná část — nadpis, tělo, obrázek) a data (vlastní pole pro aplikaci). Pro APNS: slovník aps s alert, badge, sound, category a content-available. Správná struktura payloadu je kritická: pokud notification + data dorazí současně, aplikace na pozadí nemusí data obdržet. Doporučuje se používat pouze data zprávy pro Android a předávat vizuální pole samostatně přes FCM Console.
Často kladené otázky
FCM (Firebase Cloud Messaging) je služba Google pro Android a multiplatformní oznámení. APNS (Apple Push Notification Service) je služba Apple pouze pro iOS/macOS. FCM může doručovat oznámení přes APNS na iOS, fungující jako proxy server.
Rich Notification je rozšířené oznámení s multimediálním obsahem: obrázky, videa, audio, tlačítka akcí. Na iOS je implementováno přes Notification Content Extension; na Androidu přes BigPictureStyle a InboxStyle.
Device Token je jedinečný identifikátor zařízení pro odesílání push oznámení. Na Androidu je to Registration Token z FCM; na iOS Device Token z APNS. Token se může změnit při přeinstalaci aplikace nebo resetování nastavení, proto je třeba jej aktualizovat na serveru.
Silent Push (tiché oznámení) je oznámení bez zobrazení uživateli. Používá se pro aktualizaci dat na pozadí: synchronizace obsahu, aktualizace widgetů, předběžné načítání. Na iOS vyžaduje povolení Background Modes → Remote notifications.
PushKit je framework Apple pro doručování oznámení s vysokou prioritou používaný ve VoIP aplikacích (hovory, messengery). PushKit doručuje oznámení i když je aplikace ukončena a garantuje spuštění aplikace pro zpracování.
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í.