A Push-értesítések olyan üzenetek, amelyeket a szerver a mobileszközre küld még akkor is, ha az alkalmazás zárva van. A Google Firebase, 2024 adatai szerint a Push-értesítéseket speciális szolgáltatások — Androidon FCM és iOS-en APNS — dolgozzák fel, amelyek valós idejű kézbesítést támogatnak egyszerre milliónyi eszközre. A modern mobilalkalmazásokban a felhasználói élmény szerves részévé váltak.
Főbb pontok
A Push-értesítések rövid üzenetek, amelyeket az alkalmazásszerver a felhasználó kifejezett kérése nélkül küld az eszközére. Bannerként, ikonjelvényként vagy hangjelzésként jelennek meg, felhívva a felhasználó figyelmét az alkalmazásra és tájékoztatva fontos eseményekről.
A Push-értesítés egy címből, az üzenet törzséből és opcionális adatokból (payload) áll. Az SMS-sel ellentétben a Push-értesítések ingyenesek a felhasználó számára, és felhőszolgáltatások infrastruktúráján keresztül érkeznek — FCM Androidhoz és APNS iOS-hez. A Push-értesítések fő céljai: a felhasználói elköteleződés növelése, tájékoztatás eseményekről és a felhasználó visszacsábítása az alkalmazásba.
A használati statisztikák azt mutatják, hogy a helyesen beállított Push-értesítések 30-60%-kal növelik az alkalmazás megtartását. A túlzott gyakoriság azonban leiratkozáshoz vezet — a felhasználók több mint 60%-a kikapcsolja az értesítéseket, ha naponta háromnál többször küldik őket.
A Push-rendszer három összetevőből áll: az alkalmazásszerverből (app server), a platformszolgáltatásból (FCM/APNS) és az eszközön lévő kliensalkalmazásból. A szerver kérést küld a platformszolgáltatásnak, amely az operációs rendszerrel fenntartott állandó kapcsolaton keresztül kézbesíti az értesítést a cél-eszközre.
A kézbesítési mechanizmus a Push-értesítéseknél az eszköz és a platformszolgáltatás közötti állandó kapcsolaton alapul. Az operációs rendszer egy titkosított kommunikációs csatornát tart fenn, amelyen keresztül az összes Push-üzenet áthalad.
Az első indításkor az alkalmazás engedélyt kér az értesítések küldésére, és megkapja az egyedi eszköztokent az FCM-től vagy APNS-től. Ez a token egy legfeljebb 4 KB hosszúságú karaktersorozat, amely egyedileg azonosítja az alkalmazáspéldányt. A token megváltozik az alkalmazás újratelepítésekor vagy az eszköz biztonsági másolatból történő visszaállításakor.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
Az alkalmazásszerver HTTP-kérést küld a FCM API-hoz vagy APNS API-hoz, megadva a cél-tokent, a címet, a törzset és a kiegészítő adatokat. A platformszolgáltatás a kézbesítés állapotával válaszol: success, invalid token (az eszköz eltávolította az alkalmazást) vagy rate-limited (túllépte a küldési gyakoriságot).
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: "token küldése a saját szerverére",
body: "Új értesítése van!"
}
})
})
A választás az FCM és az APNS között a célplatformtól függ. Az FCM támogatja az Androidot és az iOS-t, az APNS — csak az Apple ökoszisztémáját. Nézzük meg a legfontosabb különbségeket, amelyek a cross-platform mobilalkalmazások fejlesztésében fontosak.
Az FCM a Google szolgáltatása, amely a Google Play Services-re épül. Két kézbesítési sémát támogat: automatikusan megjelenő értesítéseket (display notifications) és adatértesítéseket, amelyeket az alkalmazás maga dolgoz fel. Az FCM ingyenes, és nincs korlátozva a küldhető üzenetek száma.
Az APNS az Apple szolgáltatása, amely támogatja a multimédiás mellékleteket (képek, videók, hangok) akár 10 MB méretig. Az APNS-en keresztüli küldéshez TLS-tanúsítvány vagy hitelesítési kulcs szükséges. Az APNS korlátozza az egy eszközre küldhető értesítések gyakoriságát — legfeljebb 150 értesítés percenként, ezt követően bekapcsol a sebességkorlátozás.
| Jellemző | FCM | APNS |
|---|---|---|
| Platformok | Android, iOS, Web | iOS, macOS, watchOS |
| Követelmények | Google Play Services | Apple Developer Program |
| Média | 4 KB-ig (adat) | 10 MB-ig (mellékletek) |
| Prioritás | normal/high | immediate/power-saving |
| Költség | ingyenes | ingyenes (fiók szükséges) |
A Push-értesítéseket a megjelenítés módja és célja szerint osztályozzuk. A típusok megértése segít kiválasztani a megfelelő stratégiát minden felhasználói interakciós forgatókönyvhöz.
A leggyakoribb típus — megjelenített értesítés címmel és törzsszöveggel. Az operációs rendszer automatikusan megjeleníti a rendszertálcán, a zárolási képernyőn és banner formájában. A fejlesztő beállíthat hangot, rezgést, ikonjelvényt és műveleti gombokat közvetlen műveletekhez (válasz, megnyitás, elutasítás).
Az adatértesítések csak payloadot tartalmaznak vizuális megjelenítés nélkül. Az alkalmazás a háttérben dolgozza fel őket: szinkronizál adatokat, frissíti a gyorsítótárat vagy elindítja a letöltést. Androidon az adatértesítések garantáltan kézbesítve vannak, iOS-en — csak ha az alkalmazás aktív vagy background fetch-en keresztül.
A modern mobil operációs rendszerek támogatják a bővített és médiaértesítéseket képekkel, GIF-ekkel, videókkal és hanggal. iOS-en ez az UNNotificationAttachment segítségével, Androidon — a BigPictureStyle és InboxStyle használatával valósul meg az értesítés megjelenésének testreszabásához a rendszertálcán.
A csendes értesítések nem jelennek meg a felhasználónak, és háttérszinkronizációra használják őket. iOS-en magas prioritásúak az olyan feladatokhoz, mint az adatok frissítése az alkalmazás megnyitása előtt. Az Android adatértesítésekként kezeli őket minimális prioritással.
A Push-értesítések beállítása az infrastruktúra, a szerveroldal és a klienskód szintjén igényel intézkedéseket. Nézzük meg a tipikus folyamatot egy cross-platform mobil projekt esetében.
Androidhoz létre kell hozni egy projektet a Firebase Console-ban, hozzáadni a google-services.json fájlt a projekthez, és beállítani a FirebaseMessagingService-t. Az eszköztoken a FirebaseInstanceId vagy FirebaseMessaging.getInstance().token segítségével szerezhető meg, majd az API-n keresztül elküldésre kerül a szerverre az első indításkor vagy annak megváltozásakor.
iOS-hez szükség van az Apple Developer Program előfizetésére, Push-tanúsítvány vagy APNS-kulcs létrehozására a Developer Portal-ban, valamint a Capability Push Notifications bekapcsolására az Xcode-ban. Az értesítésekre való regisztráció az UIApplication.shared.registerForRemoteNotifications segítségével történik a deviceToken fogadásával az AppDelegate-ben.
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()
// a token elküldése a saját szerverre
}
}
A szerver oldalán a Push-értesítéseket REST API-n vagy Admin SDK-n keresztül küldik. Az FCM-hez a Firebase Admin SDK-t használják (elérhető Node.js, Java, Python, Go számára), az APNS-hez — pusher könyvtárakat (pushy Java-hoz, apn2 Node.js-hez). Ajánlott a tokeneket az adatbázisban tárolni az utolsó frissítés időbélyegével együtt.
A Push-értesítések biztonsága kritikus fontosságú, mivel rajtuk keresztül bizalmas adatok kerülhetnek továbbításra. Mindkét platform alapvető védelmi mechanizmusokat biztosít, de a fejlesztőnek helyesen kell használnia azokat.
A Push-értesítés payload-ja tartalmazhat személyes adatokat: neveket, tranzakciós összegeket, üzenetekre mutató linkeket. Még ha az FCM/APNS és az eszköz közötti kommunikációs csatorna titkosított is, az adatok elfoghatók az alkalmazás szintjén, ha az értesítést harmadik féltől származó szoftver elfogja. Ajánlott az érzékeny payload-ot a szerveren AES-256 algoritmussal titkosítani, és az eszközön a Keychain-ben (iOS) vagy EncryptedSharedPreferences-ben (Android) tárolt kulccsal visszafejteni.
Az eszköztoken egy munkamenet-azonosító, amely kompromittálódhat az eszköz feltörésekor vagy a forgalom elfogásakor. Az alkalmazásszervernek a küldés előtt ellenőriznie kell a tokeneket: össze kell vetnie az adatbázissal, nyomon kell követnie az inaktív tokeneket, és törölnie kell őket ismétlődő InvalidToken hibák esetén. Az FCM és az APNS InvalidRegistration státuszt ad vissza érvénytelen tokenek esetén — ne hagyja figyelmen kívül.
Gyakoriság-ellenőrzés nélkül a Push-értesítések spam eszközzé válhatnak, amely idegesíti a felhasználókat és csökkenti a megtartást. Állítson be korlátozásokat a szerveren: legfeljebb 5 értesítés óránként egy felhasználónak és legfeljebb 3 azonos üzenet. Tranzakciós értesítéseknél (rendelés visszaigazolása, jelszóváltoztatás) a korlátok magasabbak lehetnek — akár 10 óránként, mivel kritikus fontosságú információkat hordoznak. Használjon sebességkorlátozást a küldő API szintjén, hogy a támadó ne tudjon tömeges küldést indítani a szerverén keresztül.
Gyakran ismételt kérdések
Igen, a közvetlen APNS-kapcsolat nem támogatott Androidon — a Google Play Services nélküli eszközökön alternatívákat használnak, mint a Huawei Mobile Services (HMS) és saját WebSocket-kapcsolatok. Az FCM azonban a legtöbb alkalmazás számára szabvány marad ingyenessége és megbízhatósága miatt.
Az FCM és az APNS az utolsó értesítést tárolja a szerverein, és a kapcsolat helyreállításakor kézbesíti. Minden eszközön csak az utolsó értesítés tárolódik minden alkalmazástól, így hosszabb hálózati kimaradás esetén a köztes üzenetek elvesznek.
A leggyakoribb okok — lejárt APNS Push-tanúsítvány (1 évig érvényes), érvénytelen eszköztoken, kikapcsolt értesítések a beállításokban vagy bekapcsolt energiatakarékos mód. Ellenőrizze a tanúsítványt az Apple Developer Console-ban, és győződjön meg róla, hogy az alkalmazás engedélyt kér az UNUserNotificationCenter-en keresztül.
Androidon használjon PendingIntent-et a NotificationCompat.Builder-ben a megnyitás nyomon követéséhez Intent-en keresztül. iOS-en — az UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:) metódust. Az FCM jelentéseket biztosít a kézbesítésről és a megnyitásokról minden elküldött értesítéshez.
Jelentéktelen mértékben — a Push-értesítések nem tartanak fenn állandó kapcsolatot; az operációs rendszer egy egységes rendszercsatornát használ minden alkalmazáshoz, ami minimalizálja a teljes energiafogyasztást. A gyakori küldés (5 percenként) több energiát fogyaszt az eszköz felébresztésére és az alvó módból való kilépésre. A csendes értesítések iOS-en több energiát fogyasztanak, mivel az alkalmazás a háttérben aktiválódik a kapott adatok feldolgozásához.
Összegzés
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is