APNS: apa itu, arsitektur Apple Push Notification Service dan cara kerjanya

Penulis: IT Sectr Diterbitkan: 2026-03-20 Waktu membaca: 8 mnt

APNS (Apple Push Notification Service) — adalah layanan infrastruktur Apple untuk mengirimkan notifikasi push ke perangkat ekosistem: iPhone, iPad, Mac, Apple Watch, dan Apple TV. Layanan ini memastikan pengiriman pesan yang andal melalui koneksi TLS permanen antara perangkat dan server Apple. Menurut Apple Developer Documentation, APNS menggunakan protokol HTTP/2 untuk komunikasi dua arah dengan server aplikasi.

Poin Utama

  • APNS — layanan terpusat Apple untuk mengirimkan notifikasi push ke semua perangkat Apple
  • Protokol — HTTP/2 dengan TLS, komunikasi dua arah antara server aplikasi dan server Apple
  • Autentikasi — dua metode: Token-based (kunci p8) dan Certificate-based (sertifikat .p12)
  • Perangkat — masing-masing menerima push token unik untuk identifikasi saat pengiriman
  • Prioritas — pengiriman segera (10) atau hemat energi (5) tergantung jenis pesan

Apa itu APNS?

Apple Push Notification Service (APNS) — adalah layanan milik Apple untuk merutekan notifikasi push dari server aplikasi ke perangkat pengguna. Tidak seperti FCM, APNS tidak mendukung Android atau platform lain — sepenuhnya terikat pada ekosistem Apple.

Layanan ini bekerja melalui koneksi TLS permanen yang dibuat setiap perangkat Apple dengan server APNS saat dinyalakan. Koneksi ini dipertahankan di latar belakang dan digunakan untuk mengirimkan notifikasi dengan latensi minimal.

APNS menangani seluruh infrastruktur pengiriman: enkripsi, autentikasi, prioritisasi, dan pengiriman ulang jika perangkat tidak tersedia. Pengembang hanya perlu memberikan payload yang diformat dengan benar dan push token yang valid.

Evolusi APNS

Awalnya APNS bekerja melalui protokol biner pada port 2195–2196. Sejak 2015, Apple beralih ke protokol modern HTTP/2 yang mendukung multipleksing, kompresi header, dan notifikasi push server. HTTP/2 menjadi wajib sejak Juni 2020.

Bagaimana cara kerja Apple Push Notification Service?

Proses pengiriman notifikasi push melalui APNS terdiri dari lima tahap: pendaftaran perangkat, mendapatkan push token, pengiriman permintaan oleh server, perutean APNS, dan pengiriman ke perangkat.

  • Pendaftaran — saat dijalankan, aplikasi memanggil registerForRemoteNotifications, sistem terhubung ke APNS
  • Token — APNS mengembalikan push token ke perangkat — string unik yang mengidentifikasi aplikasi di perangkat
  • Pengiriman — server aplikasi mengirim permintaan POST ke https://api.push.apple.com dengan token dan payload
  • Perutean — APNS menemukan perangkat berdasarkan token dan mengirimkan pesan melalui koneksi TLS
  • Pemrosesan — iOS/macOS menampilkan notifikasi atau meneruskannya ke aplikasi tergantung status

Jika perangkat tidak tersedia (mati atau tanpa jaringan), APNS menyimpan pesan terakhir untuk setiap aplikasi dan mengirimkannya saat koneksi pulih. Maksimum penyimpanan — 4 minggu, setelah itu pesan dihapus.

Autentikasi di APNS: Token dan Sertifikat

Apple mendukung dua metode autentikasi server aplikasi saat mengirim notifikasi push. Setiap metode memiliki karakteristik sendiri terkait masa berlaku, pengelolaan, dan kemudahan penggunaan.

ParameterToken-based (p8)Certificate-based (.p12)
Masa berlakuTak terbatas (kunci tidak kedaluwarsa)Terbatas masa sertifikat (biasanya 1 tahun)
RotasiTidak diperlukan jika kunci tidak dikompromikanPenggantian tahunan wajib
Multi-aplikasiSatu kunci untuk semua aplikasi akunSertifikat terpisah untuk setiap aplikasi
LingkunganSatu kunci untuk Sandbox dan ProductionSertifikat berbeda untuk Sandbox dan Production

Token-based autentikasi — metode yang direkomendasikan Apple sejak 2019. Anda membuat satu kunci p8 di Apple Developer Console, memuatnya ke server, dan menandatangani setiap permintaan APNS dengannya. Kunci tidak kedaluwarsa dan berfungsi untuk semua aplikasi akun Anda.

Metode autentikasi mana yang harus dipilih

Untuk proyek baru, Token-based autentikasi jelas lebih disukai: satu kunci p8 untuk seluruh akun, tak terbatas, tanpa ketergantungan lingkungan. Certificate-based (.p12) masih digunakan di proyek lama, tetapi memerlukan penggantian tahunan dan sertifikat terpisah untuk Sandbox dan Production. Pertimbangkan masa berlaku sertifikat saat merencanakan CI/CD.

Jenis notifikasi push APNS

APNS mendukung tiga jenis notifikasi push yang berbeda dalam perilaku di perangkat dan persyaratan atribut permintaan. Pemilihan jenis tergantung pada skenario UX dan urgensi pesan.

  • Alert — notifikasi standar dengan judul, teks, dan tombol aksi opsional
  • Background — pengiriman data diam (silent push) tanpa ditampilkan ke pengguna, diproses di application:didReceiveRemoteNotification
  • VOIP — jenis khusus untuk aplikasi VoIP (PushKit), dikirim segera bahkan saat aplikasi ditutup

Untuk notifikasi Background, Anda harus menyertakan kunci content-available: 1 dan menetapkan prioritas 5 (pengiriman hemat energi). Sistem dapat membatasi jumlah notifikasi latar belakang jika aplikasi tidak memprosesnya tepat waktu.

Konfigurasi prioritas pengiriman

APNS mendukung dua nilai prioritas: 10 (pengiriman segera) dan 5 (hemat energi). Untuk notifikasi alert gunakan 10 — pengguna harus menerimanya segera. Untuk background gunakan 5 — sistem dapat menunda pengiriman untuk menghemat baterai. Prioritas yang salah untuk background dapat menyebabkan penolakan notifikasi oleh APNS.

Format payload APNS

APNS menerima payload dalam format JSON dengan ukuran maksimum 4 KB untuk notifikasi biasa dan 5 KB untuk VOIP. Payload berisi kamus wajib aps dengan pengaturan tampilan dan bidang kustom opsional.

json
{
    "aps": {
        "alert": {
            "title": "Pesan baru",
            "body": "Anda memiliki 3 obrolan belum dibaca"
        },
        "badge": 3,
        "sound": "default",
        "category": "message_category",
        "thread-id": "chat_room_42"
    },
    "customData": {
        "chatId": "42"
    }
}

Kunci thread-id mengelompokkan notifikasi di Pusat Notifikasi iOS. Kunci category menghubungkan notifikasi dengan UNNotificationCategory untuk menampilkan tombol aksi. Tanpa kunci-kunci ini, semua notifikasi ditampilkan secara terpisah.

Bidang kustom dalam payload APNS

Selain kamus wajib aps, payload APNS dapat berisi bidang kustom di tingkat teratas. Bidang-bidang ini dapat diakses oleh aplikasi melalui kamus userInfo saat memproses notifikasi. Data kustom berguna untuk mengirimkan ID entitas, layar, atau tautan. Ukuran maksimum payload adalah 4 KB, jadi hindari mengirim data dalam jumlah besar melalui push; muat melalui API setelah notifikasi dibuka.

Contoh pengiriman melalui HTTP/2 API

Untuk mengirim notifikasi push di server, Anda perlu melakukan permintaan POST ke endpoint APNS dengan header autentikasi yang benar. Di bawah ini adalah contoh dalam Node.js menggunakan autentikasi Token-based.

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: "Halo!", body: "Push tes" } }
})

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 berhasil dikirim")
    }
})

Setelah pengiriman, APNS mengembalikan status HTTP 200 jika berhasil atau kode kesalahan dengan deskripsi di badan respons. Penting untuk menangani kesalahan token-unregistered (410) — token tersebut harus dihapus dari server karena aplikasi telah dihapus dari perangkat.

Kesalahan APNS dan penanganannya

APNS mengembalikan status HTTP untuk setiap permintaan pengiriman. Pengiriman berhasil — status 200. Kesalahan memerlukan strategi penanganan yang berbeda. BadDeviceToken (400) atau Unregistered (410) — token perangkat kedaluwarsa, harus dihapus dari server. PayloadTooLarge (413) — batas 4 KB terlampaui, persingkat payload.

Kesalahan TooManyRequests (429) — batas permintaan terlampaui. APNS menetapkan kuota pada jumlah pengiriman per detik. Saat menerima 429, Anda perlu menerapkan penundaan eksponensial (exponential backoff) dan mencoba kembali. Disarankan tidak melebihi 100 permintaan per detik per koneksi HTTP/2.

Kesalahan dari sisi APNS — 500 dan 503 (Internal Server Error / Service Unavailable). Ini adalah gangguan sementara infrastruktur Apple. Dalam kasus seperti itu, ulangi pengiriman dengan penundaan 1–5 detik, maksimal 3 kali percobaan. Kesalahan 5xx konstan pada server yang berfungsi penuh jarang terjadi dan biasanya terkait dengan masalah koneksi TLS.

Untuk lingkungan Production, Anda harus mengimplementasikan pencatatan semua kesalahan APNS dengan menyertakan token, kode kesalahan, dan waktu. Ini akan membantu mengidentifikasi masalah dengan sertifikat, kuota, atau token perangkat tertentu secara cepat. Periksa masa berlaku sertifikat secara teratur jika Anda menggunakan autentikasi Certificate-based.

Pertanyaan yang Sering Diajukan

Port apa yang digunakan APNS?

APNS bekerja melalui TCP 443 (HTTPS) untuk HTTP/2 API. Sebelumnya port 2195 dan 2196 digunakan untuk protokol biner. Sejak Juni 2020, Apple mewajibkan penggunaan HTTP/2 secara eksklusif di port 443. Pastikan server memiliki akses ke api.push.apple.com.

Apa itu lingkungan Sandbox dan Production di APNS?

Sandbox — lingkungan pengujian APNS untuk debugging notifikasi push. Production — lingkungan produksi untuk pengguna nyata. Dengan autentikasi Token-based, satu kunci berfungsi untuk kedua lingkungan — endpoint berbeda: api.sandbox.push.apple.com atau api.push.apple.com.

Seberapa sering push token perangkat diperbarui?

Push token dapat berubah saat: memulihkan aplikasi dari cadangan, menginstal ulang aplikasi, memperbarui sistem operasi, mereset pengaturan jaringan. Token tidak berubah pada pembaruan aplikasi biasa melalui App Store. Server harus menangani kesalahan BadDeviceToken (400) sebagai sinyal untuk menghapus token.

Berapa ukuran maksimum payload di APNS?

4 KB (4096 byte) untuk notifikasi alert/background biasa. Untuk VOIP melalui PushKit — 5 KB (5120 byte). Melebihi ukuran akan mengembalikan kesalahan PayloadTooLarge (413). Disarankan untuk menjaga payload tetap minimal dan memuat data tambahan melalui server.

Bisakah push dikirim tanpa internet di perangkat?

APNS tidak dapat mengirimkan notifikasi ke perangkat tanpa koneksi internet. Jika perangkat offline, APNS menyimpan pesan terakhir (per aplikasi per perangkat) hingga 28 hari. Saat koneksi pulih, pesan segera dikirimkan. Pesan yang lebih lama tidak disimpan.

Kesimpulan

  • APNS — layanan infrastruktur Apple untuk pengiriman push ke iOS, macOS, watchOS, dan tvOS
  • Push token — pengidentifikasi perangkat unik, diperoleh melalui registerForRemoteNotifications
  • HTTP/2 — protokol APNS modern dengan multipleksing, wajib sejak 2020
  • Autentikasi — Token-based (p8) lebih disukai daripada Certificate-based (.p12) karena masa berlaku dan fleksibilitas
  • Alert, Background, VOIP — tiga jenis push dengan aturan pengiriman berbeda
  • Payload — JSON hingga 4 KB dengan kamus wajib aps dan bidang kustom opsional
  • Penyimpanan — APNS menyimpan satu pesan terakhir hingga 28 hari untuk perangkat offline

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga