Silent Push is een type iOS pushmelding dat op het apparaat wordt afgeleverd zonder enige weergave aan de gebruiker en zonder geluidsbegeleiding. Het belangrijkste doel van een stille melding is achtergrondsynchronisatie van gegevens, het bijwerken van inhoud en het uitvoeren van korte taken die geen aandacht van de gebruiker vereisen. Volgens Apple Developer Documentation, 2026, activeert Silent Push de app gedurende 30 seconden op de achtergrond om binnenkomende gegevens te verwerken, waarna het systeem het apparaat terug in slaapstand zet om batterij te sparen.
Belangrijkste punten
Silent Push (stille pushmelding) is een iOS-mechanisme dat gegevens op het apparaat aflevert zonder enige visuele melding aan de gebruiker. In tegenstelling tot de standaard push, die een banner weergeeft, geluid afspeelt en in het Notification Center terechtkomt, ‘wekt’ silent push de app op de achtergrond en stuurt er gegevens naartoe voor verwerking. De gebruiker komt nooit te weten over de levering van zo’n melding — het resultaat is bijgewerkte inhoud bij de volgende opening.
Het belangrijkste verschil zit in de JSON-payload: silent push bevat de vlag content-available: 1 en bevat GEEN alert, sound of badge. De standaardmelding met alert wordt altijd aan de gebruiker getoond, ongeacht content-available. Silent push werkt alleen met content-available: 1 en zonder alert — als er alert wordt toegevoegd, toont het systeem de melding zelfs met de achtergrondleveringsvlag.
Stille meldingen zijn onmisbaar voor scenario’s waarin gegevens vers moeten zijn op het moment dat de app wordt geopend, maar de gebruiker niet mag worden afgeleid. Voorbeelden: het bijwerken van de nieuwsfeed op de achtergrond, het synchroniseren van abonnementen, het downloaden van nieuwe inhoud voor offline toegang, het bijwerken van widgets, het ongeldig maken van de cache. Silent Push wordt ook gebruikt voor het ‘opwarmen’ van de app vóór een verwachte actie van de gebruiker.
De levering van Silent Push verschilt aanzienlijk van gewone meldingen en is onderworpen aan regels voor energieoptimalisatie. Het iOS-systeem ontvangt het push-verzoek van APNS, stelt vast dat het een silent push is (content-available: 1) en neemt een beslissing over de levering op basis van meerdere factoren: het batterijniveau, de energiebesparende modus, de frequentie van eerdere silent pushes, de activiteit van de app en de huidige CPU-belasting.
Op apparaten met een Apple M-chip en iOS 15+ integreert silent push met het Power Nap-mechanisme, dat het apparaat periodiek wekt voor achtergrondtaken. Power Nap consolideert meerdere silent pushes in één activiteitsperiode, wat het totale energieverbruik vermindert. De ontwikkelaar kan Power Nap niet rechtstreeks beheren — het systeem neemt automatisch een beslissing op basis van het gedrag van de gebruiker en de gebruiksgeschiedenis van de app.
Wanneer het systeem een silent push aflevert, ontvangt de app de aanroep application(_:didReceiveRemoteNotification:fetchCompletionHandler:) in de AppDelegate. De ontwikkelaar is verplicht om de completion handler binnen 30 seconden aan te roepen met het juiste resultaat (UIBackgroundFetchResult). Als de verwerking niet op tijd is voltooid, kan het systeem de frequentie van silent pushes voor deze app beperken of de levering ervan helemaal stoppen.
// Silent Push verwerken in AppDelegate
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)
}
}
Apple publiceert geen exacte intervallen tussen silent pushes, maar op basis van tests en documentatie wordt aanbevolen om niet meer dan 2–3 stille meldingen per uur per apparaat te verzenden. Bij frequentere verzending begint het systeem silent pushes te negeren en worden gegevens niet meer afgeleverd. Als vaker synchroniseren nodig is, overweeg dan het gebruik van URLSession met achtergrondconfiguratie of VoIP push.
Silent Push wordt toegepast in een breed scala aan taken waarbij gegevens actueel moeten zijn zonder actieve betrokkenheid van de gebruiker. Laten we de meest effectieve gebruiksscenario’s van dit mechanisme in echte iOS-apps bekijken.
Nieuwsapps, lezers en reisapps gebruiken Silent Push om nieuwe inhoud op de achtergrond te downloaden. Wanneer de gebruiker de app opent, zijn de gegevens al gedownload en beschikbaar, zelfs zonder internet. Deze aanpak verbetert de gebruikerservaring drastisch — lege laadschermen verdwijnen en inhoud wordt onmiddellijk weergegeven. De server stuurt een silent push wanneer er nieuwe artikelen verschijnen, en de app downloadt ze op de achtergrond voor offline lezen.
iOS WidgetKit werkt widgets bij volgens een schema, maar voor onmiddellijke bijwerking na wijziging van gegevens op de server wordt Silent Push gebruikt. De app op de achtergrond verwerkt de silent push, werkt de lokale gegevensopslag voor widgets bij en forceert de update van de timeline via WidgetCenter. De gebruiker ziet actuele informatie op de widget zonder de app te openen — wisselkoers, weersverwachting, leveringsstatus.
Wanneer de server kritieke gegevens bijwerkt (bijvoorbeeld tariferingsregels, de lijst met beschikbare functies voor premiumgebruikers), maakt Silent Push het mogelijk om de lokale cache onmiddellijk ongeldig te maken. Bij de volgende opening laadt de app verse gegevens van de server in plaats van de verouderde cache te gebruiken. Dit is vooral relevant voor apps met betaalde inhoud of abonnementen.
In sommige scenario’s moet de badge op het app-pictogram worden bijgewerkt zonder een melding weer te geven. Silent Push met het badge-veld in de payload maakt het mogelijk om de tellerwaarde in te stellen zonder de gebruiker met een banner te storen. Een chatapp kan bijvoorbeeld de badge bijwerken met het aantal ongelezen berichten zonder elk nieuw bericht als melding te tonen als de gebruiker zich in de app bevindt.
Voor de correcte werking van Silent Push is configuratie op drie niveaus vereist: het Xcode-project, de JSON-payload op de server en de verwerkingscode in de app. Elk niveau is cruciaal: het overslaan van een stap leidt ertoe dat de melding als gewoon wordt afgeleverd of helemaal niet wordt afgeleverd.
In Xcode moet u de capability Push Notifications en Background Modes met de optie Remote notifications inschakelen. Push Notifications genereert een certificaat voor APNS, en Remote notifications in Background Modes staat het systeem toe de app te wekken bij ontvangst van een silent push. Zonder Remote notifications wordt de silent push wel afgeleverd, maar wordt de app niet op de achtergrond geactiveerd en worden gegevens niet verwerkt.
De Silent Push-payload moet de sleutel aps bevatten met content-available: 1 en GEEN alert, sound of badge bevatten. Aangepaste velden worden op hetzelfde niveau als aps doorgegeven en bevatten gegevens voor verwerking: het type bewerking, objectidentificaties, metadata. Een payload zonder content-available wordt als gewone melding verwerkt; met alert — als gewone, zelfs met content-available.
{
"aps": {
"content-available": 1
},
"sync-type": "news-feed",
"last-article-id": "article_8521",
"priority": "high"
}
Bij ontvangst van een silent push roept iOS application(_:didReceiveRemoteNotification:fetchCompletionHandler:) aan voordat de app zichtbaar wordt. In deze methode moet u userInfo analyseren, het nodige werk verrichten (netwerkverzoeken, schrijven naar Core Data, cache bijwerken) en verplicht binnen 30 seconden completionHandler met het juiste resultaat aanroepen. Het niet aanroepen van completionHandler wordt door het systeem als een fout beschouwd en beïnvloedt de frequentie van toekomstige silent pushes.
Silent Push is geen betrouwbaar kanaal voor gegevenslevering voor kritieke bewerkingen — het is een optimalisatiemechanisme, geen gegarandeerde synchronisatie. De ontwikkelaar moet de beperkingen begrijpen en het systeem zo ontwerpen dat de app correct werkt zowel met als zonder silent push.
iOS garandeert niet de levering van elke silent push. Het systeem kan de levering uitstellen of annuleren bij een laag batterijniveau (onder 20%), in de Low Power Mode, bij een hoge frequentie van eerdere silent pushes, en ook als de app lange tijd niet door de gebruiker is gebruikt. Gemiddelde leveringsstatistiek volgens Apple: ongeveer 70–80% van de silent pushes wordt binnen 5 minuten afgeleverd, de rest kan worden uitgesteld of verloren gaan.
Apple raadt aan om een aantal regels te volgen voor effectief gebruik van silent push. Verzend niet meer dan 2–3 silent pushes per uur per apparaat — overschrijding van de limiet leidt tot blokkering. Gebruik compact payload: minimale payloadgrootte versnelt de verwerking en vermindert de netwerkbelasting. Roep completionHandler altijd en zo snel mogelijk aan: hoe langer de verwerking duurt, hoe groter de kans dat het systeem silent pushes in de toekomst beperkt.
Voor scenario’s die gegarandeerde levering of meer verwerkingstijd vereisen, overweeg alternatieven. VoIP push (PushKit) garandeert levering en geeft meer tijd, maar is alleen bedoeld voor VoIP-apps. Background fetch (UIApplication background fetch) wordt door het systeem volgens een schema gestart, maar kan niet door de server worden geïnitieerd. WebSocket onderhoudt een permanente verbinding, maar verbruikt meer batterij en is niet geschikt voor alle soorten apps.
Gebruik voor het debuggen van Silent Push de Console.app op Mac met een filter op de app-naam. Het systeem logt elke silent push met de aanduiding ‘achtergrondtaak’ en geeft aan of de verwerking succesvol was. Op het apparaat wordt de controle uitgevoerd via Instellingen → Ontwikkelaar → Achtergrondmodi loggen. De serverzijde wordt gevolgd via APNS Feedback Service voor het detecteren van niet-afgeleverde meldingen.
Veelgestelde vragen
Silent Push wordt niet aan de gebruiker getoond, speelt geen geluid af en komt niet in het Notification Center. Zijn taak is het activeren van de app op de achtergrond voor gegevenssynchronisatie. Gewone push toont altijd een banner en kan geluid en badge bevatten.
De app krijgt 30 seconden voor het uitvoeren van de achtergrondtaak. Na het aanroepen van completionHandler brengt het systeem het apparaat terug in slaapstand. Als u completionHandler niet op tijd aanroept, kan het systeem stoppen met het leveren van silent pushes aan deze app.
Het systeem kan de levering uitstellen bij een laag batterijniveau, in de energiebesparende modus, bij frequente verzending van silent pushes of als de app lange tijd niet is gebruikt. Dit is normaal gedrag van iOS, niet gerelateerd aan implementatiefouten.
Ja, u kunt content-available: 1 samen met alert opgeven — in dit geval wordt de melding aan de gebruiker getoond en ontvangt de app extra achtergrondactivering. Maar als de taak alleen achtergrondsynchronisatie zonder weergave is, mag alert niet worden opgegeven.
Gebruik Console.app op Mac om de logs van achtergrondtaken te bekijken. Stuur een test-silent push via APNS en controleer of didReceiveRemoteNotification wordt aangeroepen met de juiste completionHandler. Gebruik in Xcode de simulator met imitatie van de achtergrondmodus.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook