APNS: bu nədir, Apple Push Notification Service quruluşu və necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-03-20 Oxuma vaxtı: 8 dəq

APNS (Apple Push Notification Service) — bu Apple ekosistem cihazlarına push bildirişləri çatdırmaq üçün infrastruktur xidmətdir: iPhone, iPad, Mac, Apple Watch və Apple TV. Xidmət cihaz və Apple serverləri arasında daimi TLS əlaqəsi vasitəsilə mesajların etibarlı ötürülməsini təmin edir. Apple Developer Documentation-ya əsasən, APNS tətbiq serverləri ilə ikitərəfli əlaqə üçün HTTP/2 protokolundan istifadə edir.

Əsas məqamlar

  • APNS — bütün Apple cihazlarına push bildirişləri çatdırmaq üçün mərkəzləşmiş Apple xidməti
  • Protokol — TLS ilə HTTP/2, tətbiq serveri ilə Apple serverləri arasında ikitərəfli əlaqə
  • Doğrulama — iki üsul: Token-based (p8 açar) və Certificate-based (.p12 sertifikat)
  • Cihazlar — hər biri göndərmə zamanı identifikasiya üçün unikal push token alır
  • Prioritet — mesaj növündən asılı olaraq dərhal çatdırma (10) və ya enerjiyə qənət (5)

APNS nədir?

Apple Push Notification Service (APNS) — bu tətbiq serverindən istifadəçi cihazlarına push bildirişlərini yönləndirmək üçün Apple-ın öz xidmətidir. FCM-dən fərqli olaraq, APNS Android və ya digər platformaları dəstəkləmir — tamamilə Apple ekosisteminə bağlıdır.

Xidmət daimi TLS əlaqəsi vasitəsilə işləyir. Hər bir Apple cihazı açıldıqda APNS serverləri ilə bu əlaqəni qurur. Bu əlaqə fonda saxlanılır və minimal gecikmə ilə bildirişlərin çatdırılması üçün istifadə olunur.

APNS çatdırma infrastrukturunu tamamilə öz üzərinə götürür: şifrələmə, doğrulama, prioritetləşdirmə və cihaz çatışmaz olduqda təkrari göndərmə. Tərtibatçı yalnız düzgün formatlanmış yük və etibarlı push token təqdim etməlidir.

APNS-in təkamülü

Əvvəlcə APNS 2195–2196 portunda ikilik protokol vasitəsilə işləyirdi. 2015-ci ildən Apple multiplexasiya, başlıq sıxılması və server push-u dəstəkləyen müasir HTTP/2 protokoluna keçdi. HTTP/2 2020-ci ilin iyun ayından məcburi oldu.

Apple Push Notification Service necə işləyir?

APNS vasitəsilə push bildirişinin çatdırılması prosesi beş mərhələdən ibarətdir: cihazın qeydiyyatı, push token alınması, server sorğusu, APNS yönləndirməsi və cihaza çatdırma.

  • Qeydiyyat — tətbiq işə salındıqda registerForRemoteNotifications çağırır, sistem APNS ilə əlaqə qurur
  • Token — APNS cihaza push token qaytarır — cihazdakı tətbiqi identifikasiya edən unikal sətir
  • Göndərmə — tətbiq serveri token və yüklə https://api.push.apple.com ünvanına POST sorğusu göndərir
  • Yönləndirmə — APNS token əsasında cihazı tapır və TLS əlaqəsi vasitəsilə mesajı çatdırır
  • Emal — iOS/macOS vəziyyətdən asılı olaraq bildirişi göstərir və ya tətbiqə ötürür

Əgər cihaz çatışmazdırsa (söndürülüb və ya şəbəkəsiz), APNS hər tətbiq üçün son mesajı saxlayır və əlaqə bərpa olunduqda çatdırır. Maksimum saxlama müddəti — 4 həftə, sonra mesaj silinir.

APNS-də doğrulama: Token və Sertifikat

Apple push bildirişləri göndərərkən tətbiq serverinin doğrulanması üçün iki üsul dəstəkləyir. Hər üsulun müddət, idarəetmə və istifadə rahatlığı baxımından öz xüsusiyyətləri var.

ParametrToken-based (p8)Certificate-based (.p12)
MüddətMüəyyən müddətsiz (açar bitmir)Sertifikat müddəti ilə məhdud (adətən 1 il)
RotasiyaTələb olunmur, açar kompromiz olunmayıbsaİllik dəyişdirilmə məcburidir
ÇoxtətbiqlilikHesabdakı bütün tətbiqlər üçün bir açarHər tətbiq üçün ayrı sertifikat
MühitSandbox və Production üçün bir açarSandbox və Production üçün fərqli sertifikatlar

Token-based doğrulama — 2019-cu ildən Apple tərəfindən tövsiyə olunan üsul. Apple Developer Console-da bir p8 açarı yaradır, serverə yükləyir və hər APNS sorğusunu onunla imzalayırsınız. Açar bitmir və hesabınızdakı bütün tətbiqlər üçün işləyir.

Hansı doğrulama üsulunu seçməli

Yeni layihələr üçün Token-based doğrulama üstünlük təşkil edir: bütün hesab üçün bir p8 açarı, müəyyən müddətsiz, mühitə bağlı olmayan. Certificate-based (.p12) köhnə layihələrdə istifadə olunur, lakin illik dəyişdirilmə və Sandbox və Production üçün ayrı sertifikatlar tələb edir. CI/CD planlaşdırarkən sertifikatın bitmə müddətini nəzərə alın.

APNS push bildiriş növləri

APNS cihazda davranışı və sorğu atributlarına tələbləri ilə fərqlənən üç növü push bildirişi dəstəkləyir. Növ seçimi UX ssenarisindən və mesajın təciliiliyindən asılıdır.

  • Alert — başlıq, mətn və isteğə bağlı aksiya düymələri ilə standart bildiriş
  • Background — istifadəçiyə göstərilmədən məlumatların səssiz çatdırılması (silent push), application:didReceiveRemoteNotification-da emal edilir
  • VOIP — VoIP tətbiqləri üçün xüsusi növ (PushKit), tətbiq bağlı olsa belə dərhal çatdırılır

Background bildirişləri üçün content-available: 1 açarını göstərmək və prioriteti 5 (enerjiyə qənət edən çatdırma) təyin etmək lazımdır. Sistem tətbiq fon bildirişlərini vaxtında emal etməzsə, onların sayını məhdudlaşdıra bilər.

Çatdırma prioritetinin konfiqurasiyası

APNS iki prioritet dəyərini dəstəkləyir: 10 (dərhal çatdırma) və 5 (enerjiyə qənət). Alert bildirişləri üçün 10 istifadə edin — istifadəçi onları dərhal almalıdır. Background üçün 5 istifadə edin — sistem batareyaya qənət etmək üçün çatdırmanı gecikdirə bilər. Background üçün yanlış prioritet APNS tərəfindən bildirişin rədd edilməsinə səbəb ola bilər.

APNS yük formatı

APNS adi bildirişlər üçün maksimum 4 KB və VOIP üçün 5 KB ölçüsündə JSON formatında yük qəbul edir. Yük ekran parametrləri ilə məcburi aps lüğəti və isteğə bağlı fərqli sahələrdən ibarətdir.

json
{
    "aps": {
        "alert": {
            "title": "Yeni mesaj",
            "body": "3 oxunmamış söhbətiniz var"
        },
        "badge": 3,
        "sound": "default",
        "category": "message_category",
        "thread-id": "chat_room_42"
    },
    "customData": {
        "chatId": "42"
    }
}

thread-id açarı iOS Bildiriş Mərkəzində bildirişləri qruplara birləşdirir. category açarı aksiya düymələrini göstərmək üçün bildirişi UNNotificationCategory ilə əlaqələndirir. Bu açarlar olmadan bütün bildirişlər ayrıca göstərilir.

APNS yükündə fərqli sahələr

Məcburi aps lüğəti ilə yanaşı, APNS yükü yuxarı səviyyədə istənilən fərqli sahələri ehtiva edə bilər. Bu sahələr bildiriş emal edilərkən tətbiqə userInfo lüğəti vasitəsilə əlçatan olur. Fərqli məlumatlar varlıq identifikatorlarını, ekranları və ya keçidləri ötürmək üçün əlverişlidir. Yükün maksimum ölçüsü 4 KB-dır, ona görə push vasitəsilə böyük həcmli məlumatları ötürməkdən çəkinin; onları bildiriş açıldıqdan sonra API vasitəsilə yükləyin.

HTTP/2 API vasitəsilə göndərmə nümunəsi

Push bildirişi göndərmək üçün serverdə düzgün doğrulama başlıqları ilə APNS endpointinə POST sorğusu etmək lazımdır. Aşağıda Token-based doğrulama ilə Node.js nümunəsi verilmişdir.

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: "Salam!", body: "Test 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 uğurlu göndərildi")
    }
})

Göndərmədən sonra APNS uğur çatdırmada HTTP status 200 və ya cavab gövdəsində təsviri olan xəta kodu qaytarır. token-unregistered (410) xətasını emal etmək vacibdir — belə bir token serverdən silinməlidir, çünki tətbiq cihazdan silinib.

APNS xətaları və onların emalı

APNS hər göndərmə sorğusu üçün HTTP statusları qaytarır. Uğurlu göndərmə — status 200. Xətalar müxtəlif emal strategiyaları tələb edir. BadDeviceToken (400) və ya Unregistered (410) — cihaz tokeni köhnəlib, serverdən silinməlidir. PayloadTooLarge (413) — 4 KB limiti keçilib, yükü qısaldın.

TooManyRequests (429) xətası — sorğu limiti keçilib. APNS saniyədə göndərilən sorğuların sayına kvota təyin edir. 429 qəbul edildikdə eksponensial gecikmə (exponential backoff) tətbiq edilməli və göndərmə təkrarlanmalıdır. Bir HTTP/2 əlaqəsi üçün saniyədə 100 sorğudan çox olmamaq tövsiyə olunur.

APNS tərəfindən xətalar — 500 və 503 (Internal Server Error / Service Unavailable). Bunlar Apple infrastrukturunun müvəqqəti nasazlıqlarıdır. Belə hallarda 1–5 saniyə gecikmə ilə, 3 cəhddən çox olmamaq şərtilə göndərməni təkrarlayın. Tam işləyən serverdə daimi 5xx xətaları nadir haldır və adətən TLS əlaqə problemləri ilə bağlıdır.

Production mühiti üçün token, xəta kodu və vaxtı göstərən bütün APNS xətalarının qeydiyyatını tətbiq etmək məcburidir. Bu, sertifikatlar, limitlər və ya xüsusi cihaz tokenləri ilə bağlı problemləri tez müəyyən etməyə kömək edir. Certificate-based doğrulama istifadə edirsinizsə, sertifikatların müddətini mütəmadi yoxlayın.

Tez-tez verilən suallar

APNS hansı portlardan istifadə edir?

APNS HTTP/2 API üçün TCP 443 (HTTPS) vasitəsilə işləyir. Əvvəllər ikilik protokol üçün 2195 və 2196 portları istifadə olunurdu. 2020-ci ilin iyun ayından Apple 443 portunda yalnız HTTP/2 istifadəsini tələb edir. Serverin api.push.apple.com ünvanına çıxışı olduğundan əmin olun.

APNS-də Sandbox və Production mühitləri nədir?

Sandbox — push bildirişlərinin sazlanması üçün APNS test mühiti. Production — real istifadəçilər üçün iş mühiti. Token-based doğrulama ilə bir açar hər iki mühit üçün işləyir — endpoint fərqlidir: api.sandbox.push.apple.com və ya api.push.apple.com.

Cihazın push tokeni nə qədər tez-tez yenilənir?

Push token aşağıdakı hallarda dəyişə bilər: tətbiqin ehtiyyat nüsxəsindən bərpası, tətbiqin yenidən qurulması, əməliyyat sisteminin yenilənməsi, şəbəkə parametrlərinin sıfırlanması. Token dəyişmir App Store vasitəsilə adi tətbiq yeniləmələrində. Server BadDeviceToken (400) xətasını tokenin silinməsi üçün siqnal kimi emal etməlidir.

APNS-də maksimum yük ölçüsü nədir?

Adi alert/background bildirişləri üçün 4 KB (4096 bayt). PushKit vasitəsilə VOIP üçün — 5 KB (5120 bayt). Ölçünün aşılması PayloadTooLarge (413) xətasını qaytarır. Yükü minimal saxlamaq və əlavə məlumatları server vasitəsilə yükləmək tövsiyə olunur.

Cihazda internet olmadan push göndərmək olarmı?

APNS internet əlaqəsi olmayan cihaza bildiriş göndərə bilməz. Cihaz oflayndırsa, APNS hər tətbiq üçün son mesajı 28 günə qədər saxlayır. ƏlaQə bərpa olunduqda mesaj dərhal çatdırılır. Köhnə mesajlar saxlanmır.

Nəticə

  • APNS — iOS, macOS, watchOS və tvOS-a push çatdırmaq üçün Apple infrastruktur xidməti
  • Push token — registerForRemoteNotifications vasitəsilə əldə edilən unikal cihaz identifikatoru
  • HTTP/2 — multipleksasiya ilə müasir APNS protokolu, 2020-ci ildən məcburi
  • Doğrulama — Token-based (p8) müddət və çeviklik baxımından Certificate-based (.p12) üzərində üstünlük təşkil edir
  • Alert, Background, VOIP — fərqli çatdırma qaydaları ilə üç push növü
  • Yük — məcburi aps lüğəti və isteğə bağlı fərqli sahələrlə 4 KB-a qədər JSON
  • Saxlama — APNS oflayn cihazlar üçün son mesajı 28 günə qədər saxlayır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun