A Silent Push az iOS push-értesítés egy olyan típusa, amelyet a készülékre a felhasználó számára történő megjelenítés és hangjelzés nélkül kézbesítenek. A csendes értesítés fő célja az adatok háttérszinkronizálása, a tartalom frissítése és olyan rövid feladatok végrehajtása, amelyek nem igényelnek a felhasználó figyelmét. Az Apple Developer Documentation, 2026 szerint a Silent Push 30 másodpercre aktiválja az alkalmazást a háttérben a beérkező adatok feldolgozásához, majd a rendszer az akkumulátor kímélése érdekében visszahelyezi a készüléket alvó módba.
Főbb pontok
Silent Push (csendes push-értesítés) egy iOS-mechanizmus, amely vizuális értesítés nélkül juttat el adatokat a készülékre. Ellentétben a szabványos push-szal, amely bannert jelenít meg, hangot játszik le és bekerül az Notification Centerbe, a silent push „felébreszti” az alkalmazást a háttérben és adatokat küld neki feldolgozásra. A felhasználó soha nem tud egy ilyen értesítés kézbesítéséről — az eredmény frissített tartalom a következő megnyitáskor.
A kulcskülönbség a JSON-csomagban rejlik: a silent push tartalmazza a content-available: 1 jelzőt és NEM tartalmaz alert, sound vagy badge értesítést. A szabványos értesítés alert-tel mindig megjelenik a felhasználónak, függetlenül a content-available-tól. A silent push csak content-available: 1-gyel és alert nélkül működik — ha alert kerül hozzáadásra, a rendszer megjeleníti az értesítést, még a háttérkézbesítés jelzőjével együtt is.
A csendes értesítések nélkülözhetetlenek azokhoz a forgatókönyvekhez, amikor az adatoknak frissnek kell lenniük az alkalmazás megnyitásakor, de a felhasználót nem szabad megzavarni. Példák: a hírfolyam frissítése a háttérben, előfizetések szinkronizálása, új tartalom letöltése offline eléréshez, widgetek frissítése, gyorsítótár érvénytelenítése. A Silent Push-t az alkalmazás „felmelegítésére” is használják a felhasználó várt művelete előtt.
A Silent Push kézbesítése jelentősen eltér a szokásos értesítésektől és az energiafogyasztás optimalizálásának szabályai alá tartozik. Az iOS-rendszer megkapja a push-kérést az APNS-től, megállapítja, hogy silent push-ról van szó (content-available: 1), és dönt a kézbesítésről számos tényező alapján: az akkumulátor töltési szintje, energiatakarékos mód, az előző silent push-ok gyakorisága, az alkalmazás aktivitása és a jelenlegi CPU-terhelés.
Az Apple M chippel és iOS 15+ rendelkező eszközökön a silent push integrálódik a Power Nap mechanizmussal, amely időnként felébreszti a készüléket háttérfeladatokhoz. Power Nap több silent push-t egyesít egy aktivitási periódusba, ami csökkenti a teljes energiafogyasztást. A fejlesztő nem tudja közvetlenül kezelni a Power Nap-ot — a rendszer automatikusan dönt a felhasználó viselkedése és az alkalmazás használati előzményei alapján.
Amikor a rendszer kézbesít egy silent push-t, az alkalmazás megkapja az application(_:didReceiveRemoteNotification:fetchCompletionHandler:) hívást az AppDelegate-ben. A fejlesztő köteles meghívni a completion handlert 30 másodpercen belül a helyes eredménnyel (UIBackgroundFetchResult). Ha a feldolgozás nem fejeződik be időben, a rendszer korlátozhatja a silent push-ok gyakoriságát ehhez az alkalmazáshoz, vagy teljesen leállíthatja a kézbesítésüket.
// Silent Push feldolgozása az AppDelegate-ben
func application(
_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler:
@escaping (UIBackgroundFetchResult) -> Void
) {
guard let type = userInfo["sync-type"] as? String
else {
completionHandler(.failed)
return
}
if type == "news-feed" {
NewsFeedSyncService().sync { success in
completionHandler(success ? .newData : .failed)
}
} else if type == "cache-invalidate" {
CacheManager.shared.invalidateAll()
completionHandler(.newData)
} else {
completionHandler(.noData)
}
}
Az Apple nem teszi közzé a pontos intervallumokat a silent push-ok között, de tesztek és dokumentáció alapján ajánlott legfeljebb 2–3 csendes értesítést küldeni óránként egy eszközre. Gyakoribb küldésnél a rendszer figyelmen kívül kezdi hagyni a silent push-okat, és az adatok nem kerülnek kézbesítésre. Ha gyakoribb szinkronizálásra van szükség, fontolja meg a URLSession használatát háttérkonfigurációval vagy VoIP push-t.
Silent Push széleskörű feladatokban alkalmazható, ahol az adatoknak naprakésznek kell lenniük a felhasználó aktív részvétele nélkül. Nézzük meg ennek a mechanizmusnak a leghatékonyabb használati forgatókönyveit valós iOS-alkalmazásokban.
A híralkalmazások, olvasók és utazási alkalmazások Silent Push-t használnak új tartalom háttérben történő letöltéséhez. Amikor a felhasználó megnyitja az alkalmazást, az adatok már letöltődtek és elérhetőek internet nélkül is. Ez a megközelítés drasztikusan javítja a felhasználói élményt — eltűnnek az ürüs betöltő képernyők, és a tartalom azonnal megjelenik. A szerver silent push-t küld, amikor új cikkek jelennek meg, az alkalmazás pedig a háttérben letölti őket offline olvasáshoz.
Az iOS WidgetKit ütemezetten frissíti a widgeteket, de az azonnali frissítéshez a szerveren történő adatváltozás után a Silent Push-t használják. Az alkalmazás a háttérben feldolgozza a silent push-t, frissíti a widgetek helyi adattárolóját és kényszeríti a timeline frissítését a WidgetCenteren keresztül. A felhasználó naprakész információkat lát a widgeten az alkalmazás megnyitása nélkül — árfolyamot, időjárás-előrejelzést, kézbesítési állapotot.
Amikor a szerver kritikus adatokat frissít (például díjszabási szabályokat, a prémium felhasználók számára elérhető funkciók listáját), a Silent Push lehetővé teszi a helyi gyorsítótár azonnali érvénytelenítését. A következő megnyitáskor az alkalmazás friss adatokat tölt be a szerverről ahelyett, hogy az elavult gyorsítótárat használná. Ez különösen fontos a fizetős tartalommal vagy előfizetéssel rendelkező alkalmazásoknál.
Bizonyos forgatókönyvekben a jelvényt az alkalmazás ikonján értesítés megjelenítése nélkül kell frissíteni. A Silent Push badge mezővel a csomagban lehetővé teszi a számláló értékének beállítását anélkül, hogy bannerekkel zavarná a felhasználót. Például egy csevegőalkalmazás frissítheti a jelvényt az olvasatlan üzenetek számával anélkül, hogy minden új üzenetet értesítésként jelenítene meg, ha a felhasználó az alkalmazásban tartózkodik.
A Silent Push helyes működéséhez három szinten van szükség konfigurációra: Xcode-projekt, JSON-csomag a szerveren és feldolgozó kód az alkalmazásban. Minden szint kritikus: bármelyik lépés kihagyása azt eredményezi, hogy az értesítés szokásosként kerül kézbesítésre vagy egyáltalán nem kerül kézbesítésre.
Az Xcode-ban be kell kapcsolni a Push Notifications és a Background Modes képességeket a Remote notifications opcióval. Push Notifications tanúsítványt generál az APNS számára, a Remote notifications pedig a Background Modes-ben lehetővé teszi a rendszer számára, hogy felébressze az alkalmazást silent push érkezésekor. Remote notifications nélkül a silent push kézbesítésre kerül, de az alkalmazás nem aktiválódik a háttérben, és az adatok nem kerülnek feldolgozásra.
A Silent Push csomagnak tartalmaznia kell az aps kulcsot content-available: 1 értékkel és NEM tartalmazhat alert, sound vagy badge értesítést. Az egyéni mezők az aps-szal azonos szinten kerülnek továbbításra és feldolgozási adatokat tartalmaznak: művelet típusa, objektumazonosítók, metaadatok. A content-available nélküli csomag szokásos értesítésként kerül feldolgozásra; az alert-tel — szokásosként, még content-available mellett is.
{
"aps": {
"content-available": 1
},
"sync-type": "news-feed",
"last-article-id": "article_8521",
"priority": "high"
}
Silent push érkezésekor az iOS meghívja az application(_:didReceiveRemoteNotification:fetchCompletionHandler:) függvényt, mielőtt az alkalmazás láthatóvá válna. Ebben a metódusban elemezni kell a userInfo-t, elvégezni a szükséges munkát (hálózati kérések, írás a Core Data-ba, gyorsítótár frissítése) és kötelezően meghívni a completionHandler-t a helyes eredménnyel 30 másodpercen belül. A completionHandler elmulasztását a rendszer hibaként érzékeli és befolyásolja a jövőbeli silent push-ok gyakoriságát.
Silent Push nem megbízható adatkézbesítési csatorna kritikus műveletekhez — ez optimalizálási mechanizmus, nem garantált szinkronizálás. A fejlesztőnek meg kell értenie a korlátozásokat és úgy kell megterveznie a rendszert, hogy az alkalmazás helyesen működjön mind silent push-sal, mind anélkül.
Az iOS nem garantálja minden silent push kézbesítését. A rendszer késleltetheti vagy törölheti a kézbesítést alacsony akkumulátorszintnél (20% alatt), Low Power Mode-ban, az előző silent push-ok magas gyakorisága esetén, valamint ha az alkalmazást hosszú ideje nem használta a felhasználó. Átlagos kézbesítési statisztika az Apple szerint: a silent push-ok körülbelül 70–80%-a 5 percen belül kézbesítésre kerül, a többi késhet vagy elveszhet.
Az Apple számos szabály betartását ajánlja a silent push hatékony használatához. Ne küldjön többet 2–3 silent push-nál óránként egy eszközre — a limit túllépése blokkoláshoz vezet. Használjon compact payload-t: a minimális csomagméret gyorsítja a feldolgozást és csökkenti a hálózati terhelést. Mindig hívja meg a completionHandler-t, és a lehető leggyorsabban: minél tovább tart a feldolgozás, annál valószínűbb, hogy a rendszer korlátozza a silent push-okat a jövőben.
Azokhoz a forgatókönyvekhez, amelyek garantált kézbesítést vagy több feldolgozási időt igényelnek, fontolja meg az alternatívákat. VoIP push (PushKit) garantálja a kézbesítést és több időt ad, de csak VoIP-alkalmazások számára készült. A Background fetch (UIApplication background fetch) ütemezetten indul a rendszer által, de nem kezdeményezhető a szerver által. A WebSocket állandó kapcsolatot tart fenn, de több akkumulátort fogyaszt és nem alkalmas minden típusú alkalmazáshoz.
A Silent Push hibakereséséhez használja a Console.app-ot Mac-en az alkalmazás neve szerinti szűrővel. A rendszer naplózza az egyes silent push-okat „háttérfeladat” jelöléssel és jelzi, hogy a feldolgozás sikeres volt-e. Az eszközön az ellenőrzés a Beállítások → Fejlesztői → Háttérmódok naplózása menüpontban történik. A szerveroldal az APNS Feedback Service segítségével figyelhető a kézbesítetlen értesítések észlelésére.
Gyakran ismételt kérdések
A Silent Push nem jelenik meg a felhasználónak, nem játszik le hangot és nem kerül be az Notification Centerbe. Feladata az alkalmazás aktiválása a háttérben adatok szinkronizálásához. A szokásos push mindig bannert jelenít meg és tartalmazhat hangot és jelvényt.
Az alkalmazás 30 másodpercet kap a háttérfeladat elvégzésére. A completionHandler meghívása után a rendszer visszahelyezi a készüléket alvó módba. Ha nem hívja meg a completionHandler-t időben, a rendszer leállíthatja a silent push-ok kézbesítését ehhez az alkalmazáshoz.
A rendszer késleltetheti a kézbesítést alacsony akkumulátorszintnél, energiatakarékos módban, gyakori silent push küldés esetén, vagy ha az alkalmazást hosszú ideje nem használták. Ez az iOS normál viselkedése, nem összefüggő a megvalósítási hibákkal.
Igen, megadható a content-available: 1 az alert-tel együtt — ebben az esetben az értesítés megjelenik a felhasználónak, és az alkalmazás további háttéraktiválást kap. De ha a feladat csak háttérszinkronizáció megjelenítés nélkül, az alert nem adható meg.
Használja a Console.app-ot Mac-en a háttérfeladatok naplóinak megtekintéséhez. Küldjön egy teszt silent push-t APNS-en keresztül, és ellenőrizze, hogy a didReceiveRemoteNotification meghívásra kerül-e a helyes completionHandler-rel. Az Xcode-ban használja a szimulátort a háttérmód imitálásával.
Ö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