APNS: bu nima, Apple Push Notification Service tuzilishi va qanday ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-03-20 O'qish vaqti: 8 daq

APNS (Apple Push Notification Service) — bu Apple ekotizim qurilmalariga push bildirishnomalarini yetkazib berish uchun infratuzilmaviy xizmat: iPhone, iPad, Mac, Apple Watch va Apple TV. Xizmat qurilma va Apple serverlari o‘rtasida doimiy TLS aloqasi orqali xabarlarning ishonchli uzatilishini ta‘minlaydi. Apple Developer Documentation ga ko‘ra, APNS ilova serverlari bilan ikki tomonlama aloqa uchun HTTP/2 protokolidan foydalanadi.

Asosiy ma’lumotlar

  • APNS — barcha Apple qurilmalariga push bildirishnomalarini yetkazish uchun markazlashtirilgan Apple xizmati
  • Protokol — TLS bilan HTTP/2, ilova serveri va Apple serverlari o‘rtasida ikki tomonlama aloqa
  • Autentifikatsiya — ikki usul: Token-based (p8 kalit) va Certificate-based (.p12 sertifikat)
  • Qurilmalar — har biri yuborishda identifikatsiya uchun noyob push token oladi
  • Prioritet — xabar turiga qarab zudlik bilan yetkazish (10) yoki energiya tejamkor (5)

APNS nima?

Apple Push Notification Service (APNS) — bu ilova serveridan foydalanuvchi qurilmalariga push bildirishnomalarini yo‘naltirish uchun Apple-ning o‘z xizmati. FCM dan farqli o‘laroq, APNS Android yoki boshqa platformalarni qo‘llab-quvvatlamaydi — u butunlay Apple ekotizimiga bog‘liq.

Xizmat doimiy TLS aloqasi orqali ishlaydi. Har bir Apple qurilmasi yoqilganda APNS serverlari bilan ushbu aloqani o‘rnatadi. Bu aloqa fonda saqlanadi va bildirishnomalarni minimal kechikish bilan yetkazish uchun ishlatiladi.

APNS yetkazish infratuzilmasini to‘liq o‘z zimmasiga oladi: shifrlash, autentifikatsiya, prioritetlashtirish va qurilma mavjud bo‘lmaganda qayta yuborish. Dasturchi faqat to‘g‘ri formatlangan yuk va haqiqiy push token taqdim etishi kerak.

APNS evolyutsiyasi

Dastlab APNS 2195–2196 portlarida ikkilik protokol orqali ishlagan. 2015 yildan Apple multiplexatsiya, sarlavha siqish va server push bildirishnomalarini qo‘llab-quvvatlaydigan zamonaviy HTTP/2 protokoliga o‘tdi. HTTP/2 2020 yil iyunidan majburiy bo‘ldi.

Apple Push Notification Service qanday ishlaydi?

APNS orqali push bildirishnomasini yetkazish jarayoni besh bosqichdan iborat: qurilmani ro‘yxatdan o‘tkazish, push token olish, server so‘rovi, APNS yo‘naltirish va qurilmaga yetkazish.

  • Ro‘yxatdan o‘tish — ilova ishga tushganda registerForRemoteNotifications ni chaqiradi, tizim APNS bilan bog‘lanadi
  • Token — APNS qurilmaga push token qaytaradi — qurilmadagi ilovani identifikatsiya qiluvchi noyob satr
  • Yuborish — ilova serveri token va yuk bilan https://api.push.apple.com ga POST so‘rovi yuboradi
  • Yo‘naltirish — APNS token bo‘yicha qurilmani topadi va TLS aloqasi orqali xabarni yetkazadi
  • Qayta ishlash — iOS/macOS holatga qarab bildirishnomani ko‘rsatadi yoki ilovaga uzatadi

Agar qurilma mavjud bo‘lmasa (o‘chirilgan yoki tarmoqsiz), APNS har bir ilova uchun oxirgi xabarni saqlaydi va aloqa tiklanganida yetkazadi. Maksimal saqlash muddati — 4 hafta, keyin xabar o‘chiriladi.

APNSda autentifikatsiya: Token va Sertifikat

Apple push bildirishnomalarini yuborishda ilova serverini autentifikatsiya qilishning ikki usulini qo‘llab-quvvatlaydi. Har bir usulning muddati, boshqaruvi va foydalanish qulayligi bo‘yicha o‘z xususiyatlari bor.

ParametrToken-based (p8)Certificate-based (.p12)
Amal qilish muddatiCheksiz (kalit muddati tugamaydi)Sertifikat muddati bilan cheklangan (odatda 1 yil)
RotatsiyaAgar kalit buzilmagan bo‘lsa, talab qilinmaydiMajburiy yillik almashtirish
Ko‘p ilovalilikHisobdagi barcha ilovalar uchun bitta kalitHar bir ilova uchun alohida sertifikat
MuhitSandbox va Production uchun bitta kalitSandbox va Production uchun turli sertifikatlar

Token-based autentifikatsiya — 2019 yildan Apple tomonidan tavsiya etilgan usul. Apple Developer Console da bitta p8 kalit yaratasiz, uni serverga yuklaysiz va har bir APNS so‘rovini u bilan imzolaysiz. Kalit muddati tugamaydi va hisobingizdagi barcha ilovalar uchun ishlaydi.

Qaysi autentifikatsiya usulini tanlash kerak

Yangi loyihalar uchun Token-based autentifikatsiya shubhasiz afzal: butun hisob uchun bitta p8 kalit, cheksiz muvvafat, muhitga bog‘liq emas. Certificate-based (.p12) hali ham eski loyihalarda ishlatiladi, lekin yillik almashtirish va Sandbox va Production uchun alohida sertifikatlar talab qiladi. CI/CD rejalashtirishda sertifikatning amal qilish muddatini hisobga oling.

APNS push bildirishnoma turlari

APNS qurilmada xulq-atvori va so‘rov atributlariga talablari bilan farqlanadigan uch turdagi push bildirishnomalarini qo‘llab-quvvatlaydi. Tur tanlash UX stsenariysi va xabarning shoshilinchligiga bog‘liq.

  • Alert — sarlavha, matn va ixtiyoriy harakat tugmalari bilan standart bildirishnoma
  • Background — foydalanuvchiga ko‘rsatmasdan ma’lumotlarni jim yetkazish (silent push), application:didReceiveRemoteNotification da qayta ishlanadi
  • VOIP — VoIP ilovalari uchun maxsus tur (PushKit), ilova yopiq bo‘lsa ham darhol yetkaziladi

Background bildirishnomalari uchun content-available: 1 kalitini ko‘rsatish va prioritetni 5 (energiya tejamkor yetkazish) qilish kerak. Agar ilova fon bildirishnomalarini o‘z vaqtida qayta ishlamasa, tizim ularning sonini cheklashi mumkin.

Yetkazish prioritetini sozlash

APNS ikki prioritet qiymatini qo‘llab-quvvatlaydi: 10 (zudlik bilan yetkazish) va 5 (energiya tejamkor). Alert bildirishnomalari uchun 10 dan foydalaning — foydalanuvchi ularni darhol olishi kerak. Background uchun 5 dan foydalaning — tizim batareyani tejash uchun yetkazishni kechiktirishi mumkin. Background uchun noto‘g‘ri prioritet APNS tomonidan bildirishnomani rad etishga olib kelishi mumkin.

APNS yuk formati

APNS oddiy bildirishnomalar uchun maksimal 4 KB va VOIP uchun 5 KB hajmdagi JSON formatidagi yukni qabul qiladi. Yuk ekran sozlamalari bilan majburiy aps lug‘ati va ixtiyoriy maxsus maydonlardan iborat.

json
{
    "aps": {
        "alert": {
            "title": "Yangi xabar",
            "body": "Sizda 3 ta o‘qilmagan chat bor"
        },
        "badge": 3,
        "sound": "default",
        "category": "message_category",
        "thread-id": "chat_room_42"
    },
    "customData": {
        "chatId": "42"
    }
}

thread-id kaliti iOS Bildirishnomalar Markazida bildirishnomalarni guruhlarga birlashtiradi. category kaliti bildirishnomani harakat tugmalarini ko‘rsatish uchun UNNotificationCategory bilan bog‘laydi. Bu kalitlarsiz barcha bildirishnomalar alohida ko‘rsatiladi.

APNS yukidagi maxsus maydonlar

Majburiy aps lug‘atidan tashqari, APNS yuki yuqori darajada istalgan maxsus maydonlarni o‘z ichiga olishi mumkin. Bu maydonlar bildirishnomani qayta ishlashda ilovaga userInfo lug‘ati orqali mavjud bo‘ladi. Maxsus ma’lumotlar ob’ekt identifikatorlari, ekranlar yoki havolalarni uzatish uchun qulaydir. Yukning maksimal hajmi 4 KB, shuning uchun push orqali katta hajmdagi ma‘lumotlarni uzatishdan saqlaning; ularni bildirishnoma ochilgandan keyin API orqali yuklang.

HTTP/2 API orqali yuborish namunasi

Push bildirishnomasini yuborish uchun serverda to‘g‘ri autentifikatsiya sarlavhalari bilan APNS endpointiga POST so‘rovi yuborish kerak. Quyida Token-based autentifikatsiya bilan Node.js misoli keltirilgan.

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: "Salom!", 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 muvaffaqiyatli yuborildi")
    }
})

Yuborishdan so‘ng APNS muvaffaqiyatli yetkazishda HTTP status 200 yoki javob tanasida tavsifi bilan xato kodini qaytaradi. token-unregistered (410) xatosini qayta ishlash muhim — bunday token serverdan o‘chirilishi kerak, chunki ilova qurilmadan o‘chirilgan.

APNS xatolari va ularni qayta ishlash

APNS har bir yuborish so‘rovi uchun HTTP statuslarini qaytaradi. Muvaffaqiyatli yuborish — status 200. Xatolar turli qayta ishlash strategiyalarini talab qiladi. BadDeviceToken (400) yoki Unregistered (410) — qurilma tokeni eskirgan, serverdan o‘chirilishi kerak. PayloadTooLarge (413) — 4 KB chegarasi oshib ketgan, yukni qisqartiring.

TooManyRequests (429) xatosi — so‘rov chegarasi oshib ketgan. APNS soniyada yuborishlar soniga kvota belgilaydi. 429 qabul qilinganda eksponensial kechikish (exponential backoff) qo‘llanilishi va yuborish takrorlanishi kerak. Bitta HTTP/2 ulanishi uchun soniyada 100 so‘rovdan oshmaslik tavsiya etiladi.

APNS tomonidagi xatolar — 500 va 503 (Internal Server Error / Service Unavailable). Bular Apple infratuzilmasining vaqtinchalik nosozliklari. Bunday hollarda 1–5 soniya kechikish bilan, 3 urinishdan ko‘p bo‘lmagan holda yuborishni takrorlang. To‘liq ishlaydigan serverda doimiy 5xx xatolari kam uchraydi va odatda TLS aloqasi muammolari bilan bog‘liq.

Production muhiti uchun token, xato kodi va vaqtni ko‘rsatgan holda barcha APNS xatolarini jurnallashtirishni majburiy ravishda joriy qiling. Bu sertifikatlar, kvotalar yoki ma’lum qurilma tokenlari bilan bog‘liq muammolarni tez aniqlashga yordam beradi. Certificate-based autentifikatsiyadan foydalansangiz, sertifikatlarning amal qilish muddatini muntazam tekshiring.

Tez-tez beriladigan savollar

APNS qanday portlardan foydalanadi?

APNS HTTP/2 API uchun TCP 443 (HTTPS) orqali ishlaydi. Ilgari ikkilik protokol uchun 2195 va 2196 portlari ishlatilgan. 2020 yil iyunidan Apple 443 portida faqat HTTP/2 dan foydalanishni talab qiladi. Serverning api.push.apple.com ga chiqishi borligiga ishonch hosil qiling.

APNSda Sandbox va Production muhitlari nima?

Sandbox — push bildirishnomalarini sozlash uchun APNS sinov muhiti. Production — haqiqiy foydalanuvchilar uchun ish muhiti. Token-based autentifikatsiya bilan bitta kalit ikkala muhit uchun ishlaydi — endpoint farq qiladi: api.sandbox.push.apple.com yoki api.push.apple.com.

Qurilmaning push tokeni qanchalik tez-tez yangilanadi?

Push token quyidagi hollarda o‘zgarishi mumkin: ilovani zaxiradan tiklash, ilovani qayta o‘rnatish, operatsion tizimni yangilash, tarmoq sozlamalarini tiklash. Token o‘zgarmaydi App Store orqali odatiy ilova yangilanishlarida. Server BadDeviceToken (400) xatosini tokenni o‘chirish uchun signal sifatida qayta ishlashi kerak.

APNSda maksimal yuk hajmi qancha?

Oddiy alert/background bildirishnomalari uchun 4 KB (4096 bayt). PushKit orqali VOIP uchun — 5 KB (5120 bayt). Hajm chegarasidan oshish PayloadTooLarge (413) xatosini qaytaradi. Yukni minimal saqlash va qo‘shimcha ma’lumotlarni server orqali yuklash tavsiya etiladi.

Qurilmada internet bo‘lmasa push yuborish mumkinmi?

APNS internet aloqasi bo‘lmagan qurilmaga bildirishnoma yubora olmaydi. Qurilma oflayn bo‘lsa, APNS har bir ilova uchun oxirgi xabarni 28 kungacha saqlaydi. Aloqa tiklanganida xabar darhol yetkaziladi. Eski xabarlar saqlanmaydi.

Xulosa

  • APNS — iOS, macOS, watchOS va tvOS ga push yetkazish uchun Apple infratuzilmaviy xizmati
  • Push token — registerForRemoteNotifications orqali olinadigan noyob qurilma identifikatori
  • HTTP/2 — multipleksatsiya bilan zamonaviy APNS protokoli, 2020 yildan majburiy
  • Autentifikatsiya — Token-based (p8) Certificate-based (.p12) dan muddat va moslashuvchanlik bo‘yicha afzal
  • Alert, Background, VOIP — turli yetkazish qoidalari bilan uch push turi
  • Yuk — majburiy aps lug‘ati va ixtiyoriy maxsus maydonlar bilan 4 KB gacha JSON
  • Saqlash — APNS oflayn qurilmalar uchun oxirgi xabarni 28 kungacha saqlaydi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing