Silent Push — суштина, позадински задаци и подешавање испоруке

Аутор: IT Sectr Објављено: 2026-03-20 Време читања: 9 мин

Silent Push је тип iOS push обавештења које се испоручује на уређај без икаквог приказивања кориснику и без звучне пратње. Основна намена тихог обавештења је синхронизација података у позадини, ажурирање садржаја и извршавање кратких задатака који не захтевају пажњу корисника. Према Apple Developer Documentation, 2026, Silent Push активира апликацију у позадини на 30 секунди за обраду приспелих података, након чега систем враћа уређај у режим мировања ради штедње батерије.

Главно

  • Позадинска активација — Silent Push буди апликацију у позадини на 30 секунди за обраду података без учешћа корисника.
  • Кључ content-available — обавезни флаг у APNS пакету са вредношћу 1 који разликује тихо обавештење од обичног.
  • Штедња батерије — систем оптимизује испоруку silent push-а: при ниском пуњењу или у режиму штедње енергије испорука може бити одложена или отказана.
  • Ограничења учесталости — iOS не гарантује испоруку сваког silent push-а, посебно при високој учесталости слања или у позадинском режиму апликације.
  • Без корисничког интерфејса — тихо обавештење се не приказује у Notification Center-у, не репродукује звук и не повећава badge на иконици апликације.

Шта је Silent Push — суштина и намена

Silent Push (тихо push обавештење) је iOS механизам који испоручује податке на уређај без икаквог визуелног обавештења корисника. За разлику од стандардног push-а, који приказује банер, репродукује звук и доспева у Notification Center, silent push "буди" апликацију у позадини и преноси јој податке за обраду. Корисник никад не сазнаје за испоруку таквог обавештења — резултат је ажурирани садржај при следећем отварању.

Разлика од обичних push обавештења

Кључна разлика лежи у JSON пакету: silent push садржи флаг content-available: 1 и НЕ садржи alert, sound или badge. Стандардно обавештење са alert увек се приказује кориснику, без обзира на content-available. Silent push ради само са content-available: 1 и без alert — ако се дода alert, систем ће приказати обавештење чак и са флагом позадинске испоруке.

Када користити Silent Push

Тиха обавештења су незаменљива за сценарије где подаци морају бити свежи у тренутку отварања апликације, али корисник не треба да буде ометен. Примери: ажурирање феда вести у позадини, синхронизација претплата, преузимање новог садржаја за офлајн приступ, ажурирање производа, инвалидирање кеша. Silent Push се такође користи за "загревање" апликације пре очекиване радње корисника.

Како функционише испорука тихих обавештења

Испорука Silent Push-а се значајно разликује од обичних обавештења и подлеже правилима оптимизације потрошње енергије. iOS систем прима push захтев од APNS-а, утврђује да је то silent push (content-available: 1) и доноси одлуку о испоруци на основу више фактора: нивоа напуњености батерије, режима штедње енергије, учесталости претходних silent push-а, активности апликације и тренутног оптерећења CPU-а.

Улога Power Nap-а и позадинских режима

На уређајима са Apple M чипом и iOS 15+, silent push се интегрише са механизмом Power Nap, који повремено буди уређај за позадинске задатке. Power Nap консолидује више silent push-а у један период активности, што смањује укупну потрошњу енергије. Програмер не може директно да управља Power Nap-ом — систем доноси одлуку аутоматски на основу понашања корисника и историјата коришћења апликације.

Прозор обраде од 30 секунди

Када систем испоручи silent push, апликација добија позив application(_:didReceiveRemoteNotification:fetchCompletionHandler:) у AppDelegate-у. Програмер је дужан да позове completion handler у року од 30 секунди, проследивши исправан резултат (UIBackgroundFetchResult). Ако обрада није завршена на време, систем може да ограничи учесталост silent push-а за ову апликацију или да потпуно обустави њихову испоруку.

swift
// Обрада Silent Push-а у 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 не објављује тачне интервале између silent push-а, али на основу тестова и документације препоручује се да шаљете не више од 2–3 тиха обавештења на сат на један уређај. При чешћем слању, систем почиње да игнорише silent push-ове, и подаци престају да се испоручују. Ако је потребна чешћа синхронизација, размотрите коришћење URLSession са позадинском конфигурацијом или VoIP push-а.

Сценарији коришћења Silent Push-а

Silent Push се примењује у широком опсегу задатака у којима подаци морају бити ажурни без активног учешћа корисника. Погледајмо најефикасније сценарије коришћења овог механизма у реалним iOS апликацијама.

Ажурирање садржаја за офлајн приступ

Новинске апликације, читачи и путовалице користе Silent Push за преузимање новог садржаја у позадини. Када корисник отвори апликацију, подаци су већ преузети и доступни чак и без интернета. Овакав приступ радикално побољшава корисничко искуство — нестају празни екрани учитавања, а садржај се приказује тренутно. Сервер шаље silent push када се појаве нови чланци, а апликација у позадини преузима их за офлајн читање.

Синхронизација стања производа

iOS WidgetKit ажурира производе по распореду, али за тренутно ажурирање након промене података на серверу користи се Silent Push. Апликација у позадини обрађује silent push, ажурира локално складиште података за производе и принудно ажурира timeline путем WidgetCenter-а. Корисник види ажурне информације на производу без отварања апликације — курс валута, прогнозу времена, статус испоруке.

Инвалидирање кеша и чишћење застарелих података

Када сервер ажурира критичне податке (на пример, правила тарификације, листу доступних функција за premium кориснике), Silent Push омогућава тренутно инвалидирање локалног кеша. При следећем отварању апликација ће учитати свеже податке са сервера, уместо да користи застарели кеш. Ово је посебно важно за апликације са плаћеним садржајем или претплатама.

Ажурирање badge-а без видљивог обавештења

У неким сценаријима потребно је ажурирати badge на иконици апликације без приказивања обавештења. Silent Push са пољем badge у пакету омогућава постављање потребне вредности бројача, не узнемиравајући корисника банером. На пример, апликација за ћаскање може да ажурира badge бројем непрочитаних порука, не приказујући сваку нову поруку као обавештење, ако се корисник налази у апликацији.

Подешавање silent push-а: пакет и capabilities

За исправан рад Silent Push-а потребно је подешавање на три нивоа: Xcode пројекту, JSON пакету на серверу и коду обраде у апликацији. Сваки ниво је критичан: изостављање било ког корака доводи до тога да се обавештење испоручује као обично или се уопште не испоручује.

Подешавање capabilities у Xcode-у

У Xcode-у је потребно укључити capability Push Notifications и Background Modes са штиклираном опцијом Remote notifications. Push Notifications генерише сертификат за APNS, а Remote notifications у Background Modes дозвољава систему да буди апликацију при пријему silent push-а. Без Remote notifications, silent push ће бити испоручен, али апликација се неће активирати у позадини, и подаци неће бити обрађени.

Структура JSON пакета

Пакет Silent Push-а мора да садржи кључ aps са content-available: 1 и НЕ садржи alert, sound или badge. Прилагођена поља се преносе на истом нивоу са aps-ом и садрже податке за обраду: тип операције, идентификаторе објеката, метаподатке. Пакет без content-available биће обрађен као обично обавештење; са alert — као обично, чак и са content-available.

json
{
    "aps": {
        "content-available": 1
    },
    "sync-type": "news-feed",
    "last-article-id": "article_8521",
    "priority": "high"
}

Обрада на клијентској страни

При пријему silent push-а, iOS позива application(_:didReceiveRemoteNotification:fetchCompletionHandler:) пре него што апликација постане видљива. У овој методи потребно је анализирати userInfo, обавити потребан посао (мрежне захтеве, упис у Core Data, ажурирање кеша) и обавезно позвати completionHandler са исправним резултатом у року од 30 секунди. Изостављање позива completionHandler-а сматра се код грешке и утиче на учесталост будућих silent push-а.

Ограничења и најбоље праксе

Silent Push није поуздан канал за испоруку података за критичне операције — то је механизам оптимизације, а не гарантоване синхронизације. Програмер мора да разуме ограничења и да пројектује систем тако да апликација исправно ради како са silent push-ом, тако и без њега.

Ограничења испоруке

iOS не гарантује испоруку сваког silent push-а. Систем може да одложи или откаже испоруку при ниском пуњењу батерије (испод 20%), у режиму Low Power Mode, при високој учесталости претходних silent push-а, као и ако апликација није дуго коришћена. Просечна статистика испоруке према Apple-у: око 70–80% silent push-а се испоручи у року од 5 минута, остали могу бити одложени или изгубљени.

Apple препоруке за silent push

Apple препоручује придржавање неколико правила за ефикасно коришћење silent push-а. Не шаљите више од 2–3 silent push-а на сат на један уређај — прекорачење лимита доводи до блокаде. Користите compact payload: минимална величина пакета убрзава обраду и смањује оптерећење мреже. Увек позовите completionHandler и што пре могуће: што обрада дуже траје, већа је вероватноћа да ће систем ограничити silent push-ове у будућности.

Алтернативе Silent Push-у

За сценарије који захтевају гарантовану испоруку или више времена за обраду, размотрите алтернативе. VoIP push (PushKit) гарантује испоруку и даје више времена, али је намењен само за VoIP апликације. Background fetch (UIApplication background fetch) покреће систем по распореду, али га сервер не може покренути. WebSocket одржава сталну везу, али троши више батерије и није погодан за све типове апликација.

Праћење и отклањање грешака

За отклањање грешака Silent Push-а користите Console.app на Mac-у са филтером по називу апликације. Систем бележи сваки silent push са ознаком "позадински задатак" и наводи да ли је обрада била успешна. На уређају провера се врши кроз Подешавања → Програмер → Евиденција позадинских режима. Серверска страна се надзире путем APNS Feedback Service за откривање неиспоручених обавештења.

Често постављана питања

По чему се Silent Push разликује од обичног push обавештења?

Silent Push се не приказује кориснику, не репродукује звук и не доспева у Notification Center. Његов задатак је да активира апликацију у позадини за синхронизацију података. Обичан push увек приказује банер и може да садржи звук и badge.

Колико времена је дато за обраду Silent Push-а?

Апликација добија 30 секунди за извршавање позадинског задатка. Након позива completionHandler-а, систем враћа уређај у режим мировања. Ако се completionHandler не позове на време, систем може да престане да испоручује silent push-ове овој апликацији.

Зашто Silent Push може да не стигне до уређаја?

Систем може да одложи испоруку при ниском пуњењу батерије, у режиму штедње енергије, при честом слању silent push-а или ако апликација није дуго коришћена. То је нормално понашање iOS-а, које није повезано са грешкама у имплементацији.

Може ли се Silent Push послати заједно са обичним обавештењем?

Да, може се навести content-available: 1 заједно са alert — у овом случају обавештење ће се приказати кориснику, а апликација ће добити додатну позадинску активацију. Али ако је задатак само позадинска синхронизација без приказивања, alert се не сме наводити.

Како проверити да се Silent Push исправно обрађује?

Користите Console.app на Mac-у за преглед евиденције позадинских задатака. Пошаљите тестни silent push кроз APNS и проверите да ли се didReceiveRemoteNotification позива са исправним completionHandler-ом. У Xcode-у користите симулатор са имитацијом позадинског режима.

Резиме

  • Silent Push — iOS механизам позадинске синхронизације, који испоручује податке без приказивања кориснику, активирајући апликацију на 30 секунди.
  • Кључ content-available: 1 — обавезни флаг у APNS пакету који разликује тихо обавештење од обичног; alert, sound и badge морају изостати.
  • Испорука није гарантована — iOS оптимизује испоруку silent push-а на основу пуњења батерије, учесталости и активности апликације; стварна испорука износи 70–80%.
  • Сценарији коришћења — позадинско преузимање садржаја, ажурирање производа, инвалидирање кеша, синхронизација претплата, ажурирање badge-а.
  • Ограничење учесталости — не више од 2–3 silent push-а на сат на један уређај; прекорачење доводи до блокаде испоруке од стране система.
  • iOS може да одложи или откаже Silent Push при ниском пуњењу, у Low Power Mode-у или при дугом одсуству активности корисника.
  • Silent Push — ефикасан алат за оптимизацију корисничког искуства, али не треба да се користи за критична или гарантована обавештења.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође