APNS: mi ez, az Apple Push Notification Service felépítése és működése

Szerző: IT Sectr Megjelenés: 2026-03-20 Olvasási idő: 8 perc

APNS (Apple Push Notification Service) — egy infrastrukturális Apple szolgáltatás push értesítések kézbesítésére az ökoszisztéma eszközeire: iPhone, iPad, Mac, Apple Watch és Apple TV. A szolgáltatás megbízható üzenetátvitelt biztosít egy állandó TLS-kapcsolaton keresztül az eszköz és az Apple szerverei között. Az Apple Developer Documentation szerint az APNS a HTTP/2 protokollt használja kétirányú kommunikációra az alkalmazásszerverekkel.

Főbb pontok

  • APNS — központosított Apple szolgáltatás push értesítések kézbesítésére az összes Apple eszközre
  • Protokoll — HTTP/2 TLS-szel, kétirányú kommunikáció az alkalmazásszerver és az Apple szerverei között
  • Hitelesítés — két módszer: Token-based (p8 kulcs) és Certificate-based (.p12 tanúsítvány)
  • Eszközök — mindegyik egyedi push tokent kap az azonosításhoz küldéskor
  • Prioritás — azonnali kézbesítés (10) vagy energiahatékony (5) az üzenet típusától függően

Mi az APNS?

Az Apple Push Notification Service (APNS) — az Apple saját szolgáltatása push értesítések útvonalához az alkalmazásszervertől a felhasználók eszközeire. Az FCM-mel ellentétben az APNS nem támogatja az Androidot vagy más platformokat — teljesen az Apple ökoszisztémához kötött.

A szolgáltatás egy állandó TLS-kapcsolaton keresztül működik, amelyet minden Apple eszköz létesít az APNS szerverekkel bekapcsoláskor. Ez a kapcsolat a háttérben marad, és az értesítések minimális késleltetéssel történő kézbesítésére szolgál.

Az APNS vállalja a teljes kézbesítési infrastruktúrát: titkosítás, hitelesítés, prioritáskezelés és újraküldés az eszköz elérhetetlensége esetén. A fejlesztőnek csak egy megfelelően formázott payloadot és érvényes push tokent kell biztosítania.

Az APNS evolúciója

Kezdetben az APNS egy bináris protokollon keresztül működött a 2195–2196 portokon. 2015-től az Apple áttért a modern HTTP/2 protokollra, amely támogatja a multiplexelést, fejléctömörítést és szerver push értesítéseket. A HTTP/2 2020 júniusától kötelező.

Hogyan működik az Apple Push Notification Service?

A push értesítés APNS-en keresztüli kézbesítésének folyamata öt szakaszból áll: eszköz regisztrálása, push token megszerzése, kérés küldése a szerver által, APNS útvonalazás és kézbesítés az eszközre.

  • Regisztráció — indításkor az alkalmazás meghívja a registerForRemoteNotifications-t, a rendszer csatlakozik az APNS-hez
  • Token — az APNS visszaadja a push tokent az eszköznek — egy egyedi karakterlánc, amely azonosítja az alkalmazást az eszközön
  • Küldés — az alkalmazásszerver POST kérést küld a https://api.push.apple.com címre a tokennal és payloaddal
  • Útvonalazás — az APNS megtalálja az eszközt a token alapján és kézbesíti az üzenetet a TLS-kapcsolaton keresztül
  • Feldolgozás — az iOS/macOS megjeleníti az értesítést vagy továbbítja az alkalmazásnak az állapottól függően

Ha az eszköz nem érhető el (kikapcsolt vagy hálózat nélkül), az APNS tárolja az utolsó üzenetet minden alkalmazáshoz és kézbesíti a kapcsolat helyreállásakor. A maximális tárolási idő 4 hét, ezután az üzenet törlődik.

Hitelesítés az APNS-ben: Token és Tanúsítvány

Az Apple két hitelesítési módszert támogat az alkalmazásszerver számára push értesítések küldésekor. Minden módszernek megvannak a maga jellemzői az érvényességi idő, kezelés és használhatóság tekintetében.

ParaméterToken-based (p8)Certificate-based (.p12)
ÉrvényességKorlátlan (a kulcs nem jár le)A tanúsítvány idejére korlátozott (általában 1 év)
RotációNem szükséges, ha a kulcs nem kompromittálódottKötelező éves csere
TöbbalkalmazásosEgy kulcs a fiók összes alkalmazásáhozKülön tanúsítvány minden alkalmazáshoz
KörnyezetEgy kulcs Sandbox és Production számáraKülönböző tanúsítványok Sandbox és Production számára

Token-based hitelesítés — az Apple által ajánlott módszer 2019 óta. Létrehoz egy p8 kulcsot az Apple Developer Console-ban, feltölti a szerverre és aláírja vele az APNS kéréseket. A kulcs nem jár le és működik a fiók összes alkalmazásához.

Melyik hitelesítési módszert válassza

Új projektekhez a Token-based hitelesítés egyértelműen előnyösebb: egyetlen p8 kulcs a teljes fiókhoz, korlátlan, környezetfüggetlen. A Certificate-based (.p12) még használatban van régebbi projektekben, de éves cserét és külön tanúsítványokat igényel Sandbox és Production számára. Vegye figyelembe a tanúsítvány lejárati idejét a CI/CD tervezésekor.

APNS push értesítési típusok

Az APNS három típusú push értesítést támogat, amelyek az eszközön való viselkedésben és a kérés attribútumainak követelményeiben különböznek. A típus választása az UX forgatókönyvtől és az üzenet sürgősségétől függ.

  • Alert — standard értesítés címmel, szöveggel és opcionális műveleti gombokkal
  • Background — csendes adatkézbesítés (silent push) a felhasználónak történő megjelenítés nélkül, az application:didReceiveRemoteNotification dolgozza fel
  • VOIP — speciális típus VoIP alkalmazásokhoz (PushKit), azonnal kézbesítve, még ha az alkalmazás zárva van

A Background értesítésekhez meg kell adni a content-available: 1 kulcsot és be kell állítani a prioritást 5-re (energiahatékony kézbesítés). A rendszer korlátozhatja a háttérértesítések számát, ha az alkalmazás nem dolgozza fel őket időben.

A kézbesítési prioritás beállítása

Az APNS két prioritási értéket támogat: 10 (azonnali kézbesítés) és 5 (energiahatékony). Az alert értesítésekhez használjon 10-et — a felhasználónak azonnal meg kell kapnia azokat. Background esetén használjon 5-öt — a rendszer késleltetheti a kézbesítést az akkumulátor kímélése érdekében. A helytelen prioritás background esetén az értesítés elutasításához vezethet az APNS részéről.

Az APNS payload formátuma

Az APNS a payloadot JSON formátumban fogadja, maximum 4 KB méretben a szokásos értesítésekhez és 5 KB méretben a VOIP számára. A payload tartalmazza a kötelező aps szótárat megjelenítési beállításokkal és opcionális egyéni mezőket.

json
{
    "aps": {
        "alert": {
            "title": "Új üzenet",
            "body": "3 olvasatlan csevegésed van"
        },
        "badge": 3,
        "sound": "default",
        "category": "message_category",
        "thread-id": "chat_room_42"
    },
    "customData": {
        "chatId": "42"
    }
}

A thread-id kulcs csoportosítja az értesítéseket az iOS Értesítési Központban. A category kulcs az értesítést az UNNotificationCategory-hez kapcsolja a műveleti gombok megjelenítéséhez. E kulcsok nélkül az összes értesítés külön jelenik meg.

Egyéni mezők az APNS payloadban

A kötelező aps szótáron kívül az APNS payload tartalmazhat tetszőleges egyéni mezőket a legfelső szinten. Ezek a mezők az alkalmazás számára a userInfo szótáron keresztül érhetők el az értesítés feldolgozásakor. Az egyéni adatok hasznosak entitások azonosítóinak, képernyőknek vagy linkeknek az átadásához. A payload maximális mérete 4 KB, ezért kerülje a nagy adatmennyiségek push-on keresztüli küldését; töltse be őket API-n keresztül az értesítés megnyitása után.

Példa küldésre HTTP/2 API-n keresztül

Push értesítés küldéséhez a szervernek POST kérést kell küldenie az APNS endpointra a megfelelő hitelesítési fejlécekkel. Alább egy példa Node.js-ben Token-based hitelesítéssel.

js
const http2 = require("http2")
const fs = require("fs")
const jwt = require("jsonwebtoken")

const token = jwt.sign(
    { iss: "TEAM_ID", iat: Math.floor(Date.now() / 1000) },
    fs.readFileSync("AuthKey.p8"),
    { algorithm: "ES256", keyid: "KEY_ID" }
)

const payload = JSON.stringify({
    aps: { alert: { title: "Szia!", body: "Teszt push" } }
})

const client = http2.connect(
    "https://api.push.apple.com"
)

const req = client.request({
    ":method": "POST",
    ":path": "/3/device/DEVICE_PUSH_TOKEN",
    "authorization": "bearer " + token,
    "apns-push-type": "alert",
    "apns-topic": "com.example.app",
    "apns-priority": "10"
})
req.end(payload)

req.on("response", (headers) => {
    if (headers[":status"] === 200) {
        console.log("Push sikeresen elküldve")
    }
})

Küldés után az APNS HTTP 200 státuszt ad vissza sikeres kézbesítéskor vagy hibakódot leírással a válasz törzsében. Fontos kezelni a token-unregistered (410) hibát — az ilyen tokent el kell távolítani a szerverről, mert az alkalmazást eltávolították az eszközről.

APNS hibák és kezelésük

Az APNS HTTP státuszokat ad vissza minden küldési kéréshez. Sikeres küldés — 200 státusz. A hibák különböző kezelési stratégiákat igényelnek. BadDeviceToken (400) vagy Unregistered (410) — az eszköz token lejárt, el kell távolítani a szerverről. PayloadTooLarge (413) — a 4 KB-os korlát túllépése, rövidítse le a payloadot.

A TooManyRequests (429) hiba — a kérések számának korlátja túllépve. Az APNS kvótát állít be a másodpercenkénti küldések számára. 429 fogadásakor exponenciális késleltetést (exponential backoff) kell alkalmazni és újra kell próbálni a küldést. Ajánlott nem túllépni a 100 kérést másodpercenként HTTP/2 kapcsolatonként.

APNS oldali hibák — 500 és 503 (Internal Server Error / Service Unavailable). Ezek az Apple infrastruktúra átmeneti meghibásodásai. Ilyen esetekben ismételje a küldést 1–5 másodperces késleltetéssel, legfeljebb 3 próbálkozzon. Az állandó 5xx hibák egy teljesen működő szerveren ritkák és általában TLS kapcsolati problémákhoz kapcsolódnak.

A Production környezethez kötelező az összes APNS hiba naplózását megvalósítani a token, hibakód és idő megadásával. Ez segít gyorsan azonosítani a tanúsítványokkal, kvótákkal vagy bizonyos eszköztokenekkel kapcsolatos problémákat. Rendszeresen ellenőrizze a tanúsítványok lejárati idejét, ha Certificate-based hitelesítést használ.

Gyakran Ismételt Kérdések

Milyen portokat használ az APNS?

Az APNS a TCP 443-on (HTTPS) keresztül működik a HTTP/2 API számára. Korábban a 2195 és 2196 portokat használták a bináris protokollhoz. 2020 júniusa óta az Apple kizárólag a HTTP/2 használatát írja elő a 443-as porton. Győződjön meg róla, hogy a szerver hozzáfér az api.push.apple.com címhez.

Mi a Sandbox és Production környezet az APNS-ben?

A Sandbox — az APNS tesztkörnyezete push értesítések hibakereséséhez. A Production — éles környezet valós felhasználók számára. Token-based hitelesítéssel egy kulcs működik mindkét környezethez — az endpoint eltér: api.sandbox.push.apple.com vagy api.push.apple.com.

Milyen gyakran frissül az eszköz push tokenje?

A push token a következő esetekben változhat: alkalmazás visszaállítása biztonsági mentésből, alkalmazás újratelepítése, operációs rendszer frissítése, hálózati beállítások visszaállítása. A token nem változik az alkalmazás szokásos frissítéseinél az App Store-on keresztül. A szervernek a BadDeviceToken (400) hibát a token eltávolítására szolgáló jelként kell kezelnie.

Mekkora a maximális payload méret az APNS-ben?

4 KB (4096 bájt) a szokásos alert/background értesítésekhez. VOIP esetén PushKit-en keresztül — 5 KB (5120 bájt). A méret túllépése PayloadTooLarge (413) hibát eredményez. Ajánlott a payloadot minimálisan tartani és a többletadatokat a szerveren keresztül betölteni.

Küldhetők push értesítések internet nélkül az eszközön?

Az APNS nem tud értesítést kézbesíteni internetkapcsolat nélküli eszközre. Ha az eszköz offline, az APNS tárolja az utolsó üzenetet (alkalmazásonként eszközenként) 28 napig. A kapcsolat helyreállásakor az üzenet azonnal kézbesítésre kerül. A régebbi üzenetek nem kerülnek tárolásra.

Összefoglaló

  • APNS — infrastrukturális Apple szolgáltatás push kézbesítésére iOS, macOS, watchOS és tvOS rendszerekre
  • Push token — egyedi eszközazonosító, a registerForRemoteNotifications segítségével szerezhető meg
  • HTTP/2 — modern APNS protokoll multiplexeléssel, 2020 óta kötelező
  • Hitelesítés — a Token-based (p8) előnyösebb a Certificate-based (.p12) helyett az érvényesség és rugalmasság miatt
  • Alert, Background, VOIP — három push típus eltérő kézbesítési szabályokkal
  • Payload — JSON legfeljebb 4 KB méretben, kötelező aps szótárral és opcionális egyéni mezőkkel
  • Tárolás — az APNS egy utolsó üzenetet tárol legfeljebb 28 napig offline eszközökhöz

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.

Projekt megbeszélése

Olvassa el is