APNS (Apple Push Notification Service) Apple کا بنیادی ڈھانچہ سروس ہے جو ایکو سسٹم ڈیوائسز — iPhone, iPad, Mac, Apple Watch اور Apple TV — پر push نوٹیفیکیشن پہنچانے کے لیے ہے۔ یہ سروس ڈیوائس اور Apple سرورز کے درمیان مستقل TLS کنکشن کے ذریعے قابل اعتماد پیغام کی ترسیل کو یقینی بناتی ہے۔ Apple Developer Documentation کے مطابق، APNS ایپلیکیشن سرورز کے ساتھ دو طرفہ مواصلات کے لیے HTTP/2 پروٹوکول استعمال کرتا ہے۔
اہم نکات
Apple Push Notification Service (APNS) Apple کی ملکیتی سروس ہے جو ایپلیکیشن سرور سے صارفین کے ڈیوائسز تک push نوٹیفیکیشن روٹ کرتی ہے۔ FCM کے برعکس، APNS Android یا دیگر پلیٹ فارمز کو سپورٹ نہیں کرتا — یہ مکمل طور پر Apple ایکو سسٹم سے منسلک ہے۔
سروس ایک مستقل TLS کنکشن کے ذریعے کام کرتی ہے جو ہر Apple ڈیوائس شروع ہونے پر APNS سرورز کے ساتھ قائم کرتا ہے۔ یہ کنکشن بیک گراؤنڈ میں برقرار رکھا جاتا ہے اور کم سے کم تاخیر کے ساتھ نوٹیفیکیشن پہنچانے کے لیے استعمال ہوتا ہے۔
APNS ترسیل کے تمام بنیادی ڈھانچے کو سنبھالتا ہے: انکرپشن، تصدیق، ترجیح بندی، اور ڈیوائس کے دستیاب نہ ہونے پر دوبارہ بھیجنا۔ ڈویلپر کو صرف صحیح فارمیٹ شدہ پے لوڈ اور ایک درست push ٹوکن فراہم کرنے کی ضرورت ہے۔
اصل میں، APNS پورٹ 2195–2196 پر بائنری پروٹوکول کے ذریعے کام کرتا تھا۔ 2015 سے، Apple نے سروس کو جدید HTTP/2 پروٹوکول میں منتقل کر دیا ہے، جو ملٹی پلیکسنگ، ہیڈر کمپریشن اور سرور push نوٹیفیکیشن کو سپورٹ کرتا ہے۔ HTTP/2 جون 2020 سے لازمی ہو گیا۔
APNS کے ذریعے push نوٹیفیکیشن کی ترسیل کا عمل پانچ مراحل پر مشتمل ہے: ڈیوائس رجسٹریشن، push ٹوکن حاصل کرنا، سرور کی طرف سے درخواست بھیجنا، APNS روٹنگ، اور ڈیوائس تک ترسیل۔
اگر ڈیوائس دستیاب نہیں ہے (بند ہے یا نیٹ ورک نہیں ہے)، APNS ہر ایپ کے لیے تازہ ترین پیغام ذخیرہ کرتا ہے اور کنکشن بحال ہونے پر اسے پہنچاتا ہے۔ زیادہ سے زیادہ ذخیرہ کرنے کی مدت 4 ہفتے ہے، جس کے بعد پیغام حذف کر دیا جاتا ہے۔
Apple push نوٹیفیکیشن بھیجتے وقت ایپلیکیشن سرور کی تصدیق کے دو طریقے سپورٹ کرتا ہے۔ ہر طریقے کی میعاد کی مدت، انتظام اور استعمال میں آسانی کے لحاظ سے اپنی خصوصیات ہیں۔
| پیرامیٹر | Token-based (p8) | Certificate-based (.p12) |
|---|---|---|
| میعاد | غیر معینہ (کلید ختم نہیں ہوتی) | سرٹیفکیٹ کی میعاد تک محدود (عام طور پر 1 سال) |
| روٹیشن | ضروری نہیں جب تک کلید سے سمجھوتہ نہ ہو | سالانہ تبدیلی لازمی |
| ملٹی ایپ | اکاؤنٹ کی تمام ایپس کے لیے ایک کلید | ہر ایپ کے لیے علیحدہ سرٹیفکیٹ |
| ماحول | Sandbox اور Production کے لیے ایک کلید | Sandbox اور Production کے لیے مختلف سرٹیفکیٹ |
Token-based تصدیق 2019 سے Apple کی تجویز کردہ طریقہ ہے۔ آپ Apple Developer Console میں ایک p8 کلید بناتے ہیں، اسے اپنے سرور پر اپ لوڈ کرتے ہیں، اور ہر APNS درخواست پر اس سے دستخط کرتے ہیں۔ کلید کبھی ختم نہیں ہوتی اور آپ کے اکاؤنٹ کی تمام ایپس کے لیے کام کرتی ہے۔
نئے پروجیکٹس کے لیے، Token-based تصدیق واضح طور پر ترجیحی ہے: پورے اکاؤنٹ کے لیے ایک p8 کلید، غیر معینہ، ماحول سے منسلک نہیں۔ Certificate-based (.p12) اب بھی لیگیسی پروجیکٹس میں استعمال ہوتا ہے لیکن اس میں سالانہ تبدیلی اور Sandbox اور Production کے لیے علیحدہ سرٹیفکیٹ کی ضرورت ہوتی ہے۔ CI/CD کی منصوبہ بندی کرتے وقت سرٹیفکیٹ کی میعاد ختم ہونے پر غور کریں۔
APNS push نوٹیفیکیشن کی تین اقسام کو سپورٹ کرتا ہے، جو ڈیوائس پر ان کے رویے اور درخواست کے اوصاف کی ضروریات میں مختلف ہیں۔ قسم کا انتخاب UX منظر نامہ اور پیغام کی فوری ضرورت پر منحصر ہے۔
Background نوٹیفیکیشن کے لیے، آپ کو content-available: 1 کلید بتانی ہوگی اور ترجیح 5 (توانائی کی بچت والی ترسیل) سیٹ کرنی ہوگی۔ اگر ایپ انہیں بروقت پروسیس نہیں کرتی تو سسٹم بیک گراؤنڈ نوٹیفیکیشن کی تعداد کو محدود کر سکتا ہے۔
APNS دو ترجیحی اقدار کو سپورٹ کرتا ہے: 10 (فوری ترسیل) اور 5 (توانائی کی بچت)۔ Alert نوٹیفیکیشن کے لیے 10 استعمال کریں — صارف کو انہیں فوری طور پر ملنا چاہیے۔ بیک گراؤنڈ نوٹیفیکیشن کے لیے 5 استعمال کریں — سسٹم بیٹری بچانے کے لیے ترسیل میں تاخیر کر سکتا ہے۔ بیک گراؤنڈ کے لیے غلط ترجیح APNS مسترد کرنے کا باعث بن سکتی ہے۔
APNS عام نوٹیفیکیشن کے لیے زیادہ سے زیادہ 4 KB اور VOIP کے لیے 5 KB سائز کے ساتھ JSON فارمیٹ میں پے لوڈ قبول کرتا ہے۔ پے لوڈ میں ڈسپلے سیٹنگز کے ساتھ لازمی aps ڈکشنری اور اختیاری کسٹم فیلڈز شامل ہیں۔
{
"aps": {
"alert": {
"title": "نیا پیغام",
"body": "آپ کی 3 غیر پڑھی ہوئی چیٹس ہیں"
},
"badge": 3,
"sound": "default",
"category": "message_category",
"thread-id": "chat_room_42"
},
"customData": {
"chatId": "42"
}
}
thread-id کلید iOS نوٹیفیکیشن سینٹر میں نوٹیفیکیشن کو گروپ کرتی ہے۔ category کلید ایکشن بٹن دکھانے کے لیے نوٹیفیکیشن کو UNNotificationCategory سے جوڑتی ہے۔ ان کلیدوں کے بغیر، تمام نوٹیفیکیشن انفرادی طور پر ظاہر ہوتے ہیں۔
لازمی aps ڈکشنری کے علاوہ، APNS پے لوڈ میں اوپری سطح پر کوئی بھی کسٹم فیلڈ ہو سکتے ہیں۔ یہ فیلڈز نوٹیفیکیشن پروسیس کرتے وقت userInfo ڈکشنری کے ذریعے ایپ کے لیے قابل رسائی ہیں۔ کسٹم ڈیٹا اینٹیٹی آئیڈینٹیفائر، اسکرینز یا لنکس منتقل کرنے کے لیے آسان ہے۔ زیادہ سے زیادہ پے لوڈ سائز 4 KB ہے، لہٰذا push کے ذریعے بڑی مقدار میں ڈیٹا منتقل کرنے سے گریز کریں؛ نوٹیفیکیشن کھولنے کے بعد API کے ذریعے لوڈ کریں۔
سرور سے push نوٹیفیکیشن بھیجنے کے لیے، آپ کو صحیح تصدیقی ہیڈرز کے ساتھ APNS اینڈ پوائنٹ پر POST درخواست کرنی ہوگی۔ ذیل میں Token-based تصدیق استعمال کرتے ہوئے Node.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: "ہیلو!", body: "ٹیسٹ 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 کامیابی سے بھیج دیا گیا")
}
})
بھیجنے کے بعد، APNS کامیاب ترسیل پر HTTP سٹیٹس 200 یا جوابی باڈی میں وضاحت کے ساتھ ایرر کوڈ واپس کرتا ہے۔ token-unregistered (410) ایررز کو ہینڈل کرنا ضروری ہے — ایسے ٹوکنز کو سرور سے ہٹا دینا چاہیے، کیونکہ ایپ ڈیوائس سے حذف ہو چکی ہے۔
APNS ہر بھیجنے کی درخواست کے لیے HTTP سٹیٹس کوڈ واپس کرتا ہے۔ کامیاب ترسیل سٹیٹس 200 واپس کرتی ہے۔ ایررز کے لیے مختلف ہینڈلنگ حکمت عملیوں کی ضرورت ہوتی ہے۔ BadDeviceToken (400) یا Unregistered (410) — ڈیوائس ٹوکن پرانا ہو گیا ہے اور اسے سرور سے ہٹا دینا چاہیے۔ PayloadTooLarge (413) — 4 KB کی حد تجاوز کر گئی، پے لوڈ کم کریں۔
TooManyRequests (429) — درخواست کی حد تجاوز کر گئی۔ APNS فی سیکنڈ بھیجنے کی تعداد پر کوٹہ مقرر کرتا ہے۔ 429 موصول ہونے پر، ایکسپونینشل بیک آف (exponential backoff) لاگو کریں اور دوبارہ کوشش کریں۔ فی HTTP/2 کنکشن فی سیکنڈ 100 درخواستوں سے تجاوز نہ کرنے کی سفارش کی جاتی ہے۔
APNS کی طرف سے ایررز — 500 اور 503 (اندرونی سرور ایرر / سروس دستیاب نہیں)۔ یہ Apple کے بنیادی ڈھانچے کی عارضی خرابیاں ہیں۔ ایسی صورتوں میں، 1–5 سیکنڈ کی تاخیر سے دوبارہ کوشش کریں، 3 سے زیادہ کوششیں نہ کریں۔ مکمل طور پر کام کرنے والے سرور کے ساتھ مستقل 5xx ایررز نایاب ہیں اور عام طور پر TLS کنکشن کے مسائل سے متعلق ہوتے ہیں۔
Production ماحول کے لیے، ٹوکن، ایرر کوڈ اور وقت کے ساتھ تمام APNS ایررز کی لاگنگ کو یقینی بنائیں۔ اس سے سرٹیفکیٹس، کوٹے یا مخصوص ڈیوائس ٹوکنز کے مسائل کی فوری شناخت میں مدد ملے گی۔ اگر Certificate-based تصدیق استعمال کر رہے ہیں تو باقاعدگی سے سرٹیفکیٹ کی میعاد ختم ہونے کی تاریخیں چیک کریں۔
اکثر پوچھے گئے سوالات
APNS HTTP/2 API کے لیے TCP 443 (HTTPS) کے ذریعے کام کرتا ہے۔ پہلے، بائنری پروٹوکول کے لیے پورٹ 2195 اور 2196 استعمال ہوتے تھے۔ جون 2020 سے، Apple پورٹ 443 پر صرف HTTP/2 کے استعمال کی ضرورت ہے۔ یقینی بنائیں کہ آپ کے سرور کی api.push.apple.com تک رسائی ہے۔
Sandbox push نوٹیفیکیشن ڈیبگ کرنے کے لیے APNS کا ٹیسٹ ماحول ہے۔ Production حقیقی صارفین کے لیے لائیو ماحول ہے۔ Token-based تصدیق کے ساتھ، ایک کلید دونوں ماحول کے لیے کام کرتی ہے — اینڈ پوائنٹ مختلف ہے: api.sandbox.push.apple.com یا api.push.apple.com۔
Push ٹوکن درج ذیل صورتوں میں تبدیل ہو سکتا ہے: بیک اپ سے ایپ بحال کرنا، ایپ دوبارہ انسٹال کرنا، OS اپ ڈیٹ، نیٹ ورک سیٹنگز ری سیٹ۔ ٹوکن تبدیل نہیں ہوتا App Store کے ذریعے معمول کی ایپ اپ ڈیٹ کے دوران۔ سرور کو BadDeviceToken (400) ایرر کو ٹوکن ہٹانے کے اشارے کے طور پر ہینڈل کرنا چاہیے۔
عام alert/background نوٹیفیکیشن کے لیے 4 KB (4096 بائٹس)۔ PushKit کے ذریعے VOIP نوٹیفیکیشن کے لیے — 5 KB (5120 بائٹس)۔ سائز سے تجاوز کرنے پر PayloadTooLarge (413) ایرر آتا ہے۔ پے لوڈ کو کم سے کم رکھنے اور اضافی ڈیٹا سرور کے ذریعے لوڈ کرنے کی سفارش کی جاتی ہے۔
APNS انٹرنیٹ کنکشن کے بغیر ڈیوائس کو نوٹیفیکیشن نہیں پہنچا سکتا۔ اگر ڈیوائس آف لائن ہے، APNS 28 دنوں تک تازہ ترین پیغام (فی ایپ فی ڈیوائس) ذخیرہ کرتا ہے۔ کنکشن بحال ہونے پر، پیغام فوری طور پر پہنچایا جاتا ہے۔ پرانے پیغامات محفوظ نہیں ہوتے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں