APNS: nedir, Apple Push Notification Service nasıl çalışır ve mimarisi

Yazar: IT Sectr Yayınlanma: 2026-03-20 Okuma süresi: 8 dk

APNS (Apple Push Notification Service), ekosistem cihazlarına (iPhone, iPad, Mac, Apple Watch ve Apple TV) push bildirimleri göndermek için Apple'ın altyapı hizmetidir. Servis, cihaz ile Apple sunucuları arasındaki kalıcı TLS bağlantısı aracılığıyla güvenilir mesaj teslimi sağlar. Apple Developer Documentation'a göre, APNS, uygulama sunucularıyla çift yönlü iletişim için HTTP/2 protokolünü kullanır.

Anahtar Noktalar

  • APNS — tüm Apple cihazlarına push bildirimleri göndermek için Apple'ın merkezi hizmeti
  • Protokol — TLS ile HTTP/2, uygulama sunucusu ile Apple sunucuları arasında çift yönlü iletişim
  • Kimlik Doğrulama — iki yöntem: Token tabanlı (p8 anahtarı) ve Sertifika tabanlı (.p12 sertifikası)
  • Cihazlar — her biri gönderim sırasında tanımlama için benzersiz bir push tokenı alır
  • Öncelik — mesaj türüne bağlı olarak anında teslim (10) veya enerji verimli (5)

APNS nedir?

Apple Push Notification Service (APNS), uygulama sunucusundan kullanıcı cihazlarına push bildirimleri yönlendiren Apple'a özel hizmettir. FCM'nin aksine APNS, Android veya diğer platformları desteklemez — tamamen Apple ekosistemine bağlıdır.

Servis, her Apple cihazının başlatıldığında APNS sunucularıyla kurduğu kalıcı bir TLS bağlantısı aracılığıyla çalışır. Bu bağlantı arka planda tutulur ve minimum gecikmeyle bildirimleri iletmek için kullanılır.

APNS tüm teslim altyapısını yönetir: şifreleme, kimlik doğrulama, önceliklendirme ve cihaz kullanılamadığında yeniden gönderme. Geliştiricinin yalnızca doğru biçimlendirilmiş bir yük ve geçerli bir push tokenı sağlaması gerekir.

APNS'nin evrimi

Başlangıçta APNS, 2195–2196 numaralı portlarda ikili protokol üzerinden çalışıyordu. 2015'ten itibaren Apple, hizmeti çoğullama, başlık sıkıştırma ve sunucu push bildirimlerini destekleyen modern HTTP/2 protokolüne taşıdı. HTTP/2, Haziran 2020'de zorunlu hale geldi.

Apple Push Notification Service nasıl çalışır?

APNS aracılığıyla push bildirimi teslim süreci beş aşamadan oluşur: cihaz kaydı, push tokenı alma, sunucudan istek gönderme, APNS yönlendirmesi ve cihaza teslim.

  • Kayıt — başlatmada uygulama registerForRemoteNotifications'ı çağırır, sistem APNS ile iletişime geçer
  • Token — APNS cihaza bir push tokenı döndürür — cihazdaki uygulamayı tanımlayan benzersiz bir dize
  • Gönderme — uygulama sunucusu, token ve yük ile https://api.push.apple.com'a POST isteği gönderir
  • Yönlendirme — APNS, token ile cihazı bulur ve TLS bağlantısı üzerinden mesajı iletir
  • İşleme — iOS/macOS, duruma göre bildirimi görüntüler veya uygulamaya iletir

Cihaz kullanılamıyorsa (kapalı veya ağ yok), APNS her uygulama için en son mesajı saklar ve bağlantı yeniden kurulduğunda teslim eder. Maksimum saklama süresi 4 haftadır, ardından mesaj silinir.

APNS'de kimlik doğrulama: Token ve Sertifika

Apple, push bildirimleri gönderirken uygulama sunucusunu doğrulamak için iki yöntemi destekler. Her yöntemin geçerlilik süresi, yönetimi ve kullanım kolaylığı açısından kendine özgü özellikleri vardır.

ParametreToken Tabanlı (p8)Sertifika Tabanlı (.p12)
GeçerlilikSüresiz (anahtar sona ermez)Sertifika geçerliliğiyle sınırlı (genellikle 1 yıl)
DönüşümAnahtar tehlikeye girmediği sürece gerekmezYıllık değişim zorunludur
Çoklu uygulamaHesaptaki tüm uygulamalar için tek anahtarHer uygulama için ayrı sertifika
OrtamSandbox ve Production için tek anahtarSandbox ve Production için farklı sertifikalar

Token tabanlı kimlik doğrulama, 2019'dan beri Apple tarafından önerilen yöntemdir. Apple Developer Console'da tek bir p8 anahtarı oluşturur, sunucunuza yükler ve her APNS isteğini bununla imzalarsınız. Anahtar asla sona ermez ve hesabınızdaki tüm uygulamalar için çalışır.

Hangi kimlik doğrulama yöntemi seçilmeli

Yeni projeler için Token tabanlı kimlik doğrulama açıkça tercih edilir: tüm hesap için tek p8 anahtarı, süresiz, ortam bağımsız. Sertifika tabanlı (.p12) hâlâ eski projelerde kullanılır ancak yıllık değişim ve Sandbox ile Production için ayrı sertifikalar gerektirir. CI/CD planlarken sertifika son kullanma tarihini göz önünde bulundurun.

APNS push bildirimi türleri

APNS, cihazdaki davranışları ve istek özellikleri gereksinimleri açısından farklılık gösteren üç tür push bildirimini destekler. Tür seçimi, UX senaryosuna ve mesajın aciliyetine bağlıdır.

  • Alert — başlık, metin ve isteğe bağlı eylem düğmeleri içeren standart bildirim
  • Background — kullanıcıya göstermeden sessiz veri teslimi (sessiz push), application:didReceiveRemoteNotification içinde işlenir
  • VOIP — VoIP uygulamaları (PushKit) için özel tür, uygulama kapalıyken bile anında teslim edilir

Background bildirimleri için content-available: 1 anahtarını belirtmeli ve önceliği 5 (enerji verimli teslim) olarak ayarlamalısınız. Uygulama bunları zamanında işlemezse sistem arka plan bildirimlerinin sayısını sınırlayabilir.

Teslim önceliği yapılandırması

APNS iki öncelik değerini destekler: 10 (anında teslim) ve 5 (enerji verimli). Alert bildirimleri için 10 kullanın — kullanıcı bunları hemen almalıdır. Arka plan bildirimleri için 5 kullanın — sistem pil tasarrufu için teslimi geciktirebilir. Arka plan için yanlış öncelik APNS reddine yol açabilir.

APNS yük biçimi

APNS, normal bildirimler için maksimum 4 KB ve VOIP için 5 KB boyutuyla JSON biçiminde yük kabul eder. Yük, görüntüleme ayarlarıyla zorunlu aps sözlüğünü ve isteğe bağlı özel alanları içerir.

json
{
    "aps": {
        "alert": {
            "title": "Yeni mesaj",
            "body": "3 okunmamış sohbetiniz var"
        },
        "badge": 3,
        "sound": "default",
        "category": "message_category",
        "thread-id": "chat_room_42"
    },
    "customData": {
        "chatId": "42"
    }
}

thread-id anahtarı, iOS Bildirim Merkezi'nde bildirimleri gruplandırır. category anahtarı, eylem düğmelerini göstermek için bildirimi bir UNNotificationCategory'ye bağlar. Bu anahtarlar olmadan tüm bildirimler ayrı ayrı görüntülenir.

APNS yükünde özel alanlar

Zorunlu aps sözlüğüne ek olarak, APNS yükü en üst düzeyde herhangi bir özel alan içerebilir. Bu alanlar, bildirim işlenirken userInfo sözlüğü aracılığıyla uygulama tarafından erişilebilir. Özel veriler, varlık tanımlayıcılarını, ekranları veya bağlantıları iletmek için kullanışlıdır. Maksimum yük boyutu 4 KB'dir, bu nedenle push aracılığıyla büyük miktarlarda veri aktarmaktan kaçının; bildirimi açtıktan sonra API üzerinden yükleyin.

HTTP/2 API ile gönderme örneği

Sunucudan bir push bildirimi göndermek için, doğru kimlik doğrulama başlıklarıyla APNS bitiş noktasına bir POST isteği yapmanız gerekir. Aşağıda Token tabanlı kimlik doğrulama kullanan Node.js örneği verilmiştir.

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: "Merhaba!", 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 başarıyla gönderildi")
    }
})

Gönderme sonrası, APNS başarılı teslimde HTTP durumu 200 veya yanıt gövdesinde açıklamalı hata kodu döndürür. token-unregistered (410) hatalarını işlemek önemlidir — bu tür tokenlar sunucudan kaldırılmalıdır, çünkü uygulama cihazdan silinmiştir.

APNS hataları ve bunların işlenmesi

APNS her gönderme isteği için HTTP durum kodları döndürür. Başarılı teslim durum 200 döndürür. Hatalar farklı işleme stratejileri gerektirir. BadDeviceToken (400) veya Unregistered (410) — cihaz tokenı güncelliğini yitirmiştir ve sunucudan kaldırılmalıdır. PayloadTooLarge (413) — 4 KB sınırı aşıldı, yükü azaltın.

TooManyRequests (429) — istek sınırı aşıldı. APNS, saniye başına gönderim sayısına bir kota belirler. 429 alındığında, üstel geri çekilme (exponential backoff) uygulayın ve yeniden deneyin. HTTP/2 bağlantısı başına saniyede 100 isteği aşmamanız önerilir.

APNS tarafı hataları — 500 ve 503 (Iç Sunucu Hatası / Hizmet Kullanılamıyor). Bunlar Apple altyapısının geçici arızalarıdır. Bu durumlarda 1–5 saniye gecikmeyle yeniden deneyin, en fazla 3 deneme. Tamamen çalışan bir sunucuda kalıcı 5xx hataları nadirdir ve genellikle TLS bağlantı sorunlarıyla ilgilidir.

Production ortamları için, token, hata kodu ve zamanla birlikte tüm APNS hatalarının günlüklenmesini uyguladığınızdan emin olun. Bu, sertifikalar, kotalar veya belirli cihaz tokenlarıyla ilgili sorunları hızla belirlemeye yardımcı olur. Sertifika tabanlı kimlik doğrulama kullanıyorsanız sertifika son kullanma tarihlerini düzenli olarak kontrol edin.

Sıkça Sorulan Sorular

APNS hangi portları kullanır?

APNS, HTTP/2 API için TCP 443 (HTTPS) üzerinden çalışır. Önceden, ikili protokol için 2195 ve 2196 portları kullanılıyordu. Haziran 2020'den itibaren Apple, 443 numaralı portta yalnızca HTTP/2 kullanımını zorunlu kılar. Sunucunuzun api.push.apple.com'a erişimi olduğundan emin olun.

APNS'de Sandbox ve Production ortamları nedir?

Sandbox, push bildirimlerini hata ayıklamak için APNS test ortamıdır. Production, gerçek kullanıcılar için canlı ortamdır. Token tabanlı kimlik doğrulama ile tek anahtar her iki ortam için de çalışır — bitiş noktası farklıdır: api.sandbox.push.apple.com veya api.push.apple.com.

Bir cihazın push tokenı ne sıklıkla değişir?

Push tokenı şu durumlarda değişebilir: uygulamanın yedekten geri yüklenmesi, uygulamanın yeniden yüklenmesi, işletim sistemi güncellemesi, ağ ayarlarının sıfırlanması. App Store üzerinden normal uygulama güncellemeleri sırasında token değişmez. Sunucu, BadDeviceToken (400) hatasını tokenı kaldırma sinyali olarak işlemelidir.

APNS'de maksimum yük boyutu nedir?

Normal alert/background bildirimleri için 4 KB (4096 bayt). PushKit aracılığıyla VOIP bildirimleri için 5 KB (5120 bayt). Boyutu aşmak PayloadTooLarge (413) hatası döndürür. Yükü minimum tutmanız ve ek verileri sunucu üzerinden yüklemeniz önerilir.

Cihazda internet olmadan push gönderilebilir mi?

APNS, internet bağlantısı olmayan bir cihaza bildirim gönderemez. Cihaz çevrimdışıysa, APNS en son mesajı (uygulama başına cihaz başına) 28 güne kadar saklar. Bağlantı yeniden kurulduğunda mesaj anında teslim edilir. Daha eski mesajlar korunmaz.

Özet

  • APNS — iOS, macOS, watchOS ve tvOS'a push göndermek için Apple'ın altyapı hizmeti
  • Push tokenı — registerForRemoteNotifications aracılığıyla alınan benzersiz cihaz tanımlayıcısı
  • HTTP/2 — çoğullamalı modern APNS protokolü, 2020'den beri zorunlu
  • Kimlik doğrulama — Token tabanlı (p8), geçerlilik ve esneklik açısından Sertifika tabanlı (.p12) tercih edilir
  • Alert, Background, VOIP — farklı teslim kurallarına sahip üç tür push bildirimi
  • Yük — zorunlu aps sözlüğü ve isteğe bağlı özel alanlarla 4 KB'a kadar JSON
  • Saklama — APNS, çevrimdışı cihazlar için 28 güne kadar bir son mesajı saklar

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun