PushKit — یہ کیا ہے، iOS VoIP نوٹیفکیشن فریم ورک

مصنف: IT Sectr اشاعت: 2026-03-22 مطالعے کا وقت: 8 منٹ

PushKit ایک iOS فریم ورک ہے جو معیاری APNs کو نظرانداز کرتے ہوئے کم تاخیر والی VoIP نوٹیفکیشن فراہم کرتا ہے۔ Apple Developer Documentation (2025) کے مطابق، PushKit پس منظر میں بھی 5 سیکنڈ کے اندر کال کی ترسیل کی ضمانت دیتا ہے۔ VoIP نوٹیفکیشن براہ راست پروسیس ہوتی ہیں، بغیر صارف کو بینر دکھائے، جو فریم ورک کو iOS پر میسنجر اور ویڈیو کال ایپس کے لیے بنیادی ٹول بناتا ہے۔

اہم نکات

  • PushKit ایک iOS فریم ورک ہے جو ترجیح اور کم تاخیر کے ساتھ VoIP نوٹیفکیشن فراہم کرتا ہے۔
  • نوٹیفکیشن بینر دکھائے بغیر پروسیس ہوتی ہیں — ایپ کال ہینڈل کرنے کے لیے پس منظر میں جاگ جاتی ہے۔
  • رجسٹریشن pushType .voIP کے ساتھ PKPushRegistry کے ذریعے کی جاتی ہے۔
  • APNs سے فرق — PushKit معیاری نوٹیفکیشن چینل استعمال نہیں کرتا اور اس کی ترجیح زیادہ ہے۔
  • حدود — PushKit صرف VoIP کے لیے ڈیزائن کیا گیا ہے اور عام push نوٹیفکیشن کے لیے استعمال نہیں کیا جا سکتا۔

PushKit کیا ہے

PushKit Apple کا ایک فریم ورک ہے، جو iOS 8 میں متعارف کرایا گیا، جو VoIP ایپلیکیشنز کے لیے کم تاخیر والی push نوٹیفکیشن فراہم کرتا ہے۔ معیاری APNs (Apple Push Notification service) کے برعکس، PushKit ایپ کو آنے والی کال موصول ہونے پر پس منظر میں جاگنے کی اجازت دیتا ہے، بغیر صارف کو نوٹیفکیشن دکھائے۔ یہ وائس اور ویڈیو کال ایپس کے لیے اہم ہے — صارف فوری طور پر کال وصول کرتا ہے، چاہے ایپ بند ہو۔ Apple WWDC 2024 کے مطابق، PushKit دنیا بھر میں روزانہ 2 بلین سے زیادہ VoIP نوٹیفکیشن پروسیس کرتا ہے۔

PushKit کیسے کام کرتا ہے

میکانزم ڈیوائس اور Apple کے push سرور کے درمیان براہ راست کنکشن پر مبنی ہے، جو معیاری نوٹیفکیشن چینل کو نظرانداز کرتا ہے۔ جب ایپ سرور VoIP نوٹیفکیشن بھیجتا ہے، تو یہ ایک مخصوص PushKit سرور سے گزرتا ہے اور زیادہ سے زیادہ ترجیح کے ساتھ ڈیوائس پر پہنچایا جاتا ہے۔ سسٹم ایپ کو پس منظر میں جگاتا ہے اور ڈیلیگیٹ میتھڈ pushRegistry:didReceiveIncomingPushWithPayload:forType: کو کال کرتا ہے۔ ایپ پے لوڈ وصول کرتی ہے، کال پروسیس کرتی ہے، اور تصدیق کے لیے کمپلیشن ہینڈلر کو کال کرتی ہے۔ Apple کی تصریح کے مطابق، بھیجنے سے لے کر پروسیسنگ تک کا پورا سائیکل 5 سیکنڈ سے زیادہ نہیں لیتا۔

PushKit بمقابلہ APNs

PushKit اور APNs کے درمیان بنیادی فرق ترسیل کے طریقہ کار اور پروسیسنگ میں ہے۔ APNs بینر، آواز یا بیج دکھانے کے لیے معیاری نوٹیفکیشن چینل استعمال کرتا ہے، جبکہ PushKit بصری نوٹیفکیشن کے بغیر براہ راست ایپ میں ڈیٹا پہنچاتا ہے۔ نیچے اہم خصوصیات کا موازنہ جدول دیا گیا ہے۔

خصوصیتPushKitAPNs
ترسیل کی ترجیحاعلیٰ (فوری ترسیل)درمیانی (ممکنہ تاخیر)
ایپ بیداریہاں، پس منظر میںصرف نوٹیفکیشن کو چھونے پر
بینر ڈسپلےنہیںہاں (اختیاری)
استعمالVoIP، کالز، ویڈیو کالتمام اقسام کی نوٹیفکیشن
پے لوڈصرف JSON، کوئی میڈیا نہیںJSON + منسلکات

PushKit بھرپور میڈیا منسلکات کو بھی سپورٹ نہیں کرتا اور عام مارکیٹنگ نوٹیفکیشن کے لیے استعمال نہیں کیا جا سکتا۔ Apple PushKit کے استعمال کو سختی سے کنٹرول کرتا ہے — ایپ میں واضح VoIP فعالیت ہونی چاہیے، ورنہ اسے جائزے میں مسترد کر دیا جائے گا۔ APNs دیگر تمام منظرناموں کے لیے عالمگیر حل ہے۔

رجسٹریشن اور VoIP نوٹیفکیشن حاصل کرنا

PushKit استعمال کرنے کے لیے، ایپ کو PKPushRegistry کے ذریعے pushType .voIP کے ساتھ رجسٹر ہونا چاہیے۔ رجسٹریشن پہلے لانچ پر ایک بار کی جاتی ہے، جس کے بعد سسٹم ایک منفرد push ٹوکن بناتا ہے اور اسے ڈیلیگیٹ کے ذریعے منتقل کرتا ہے۔ یہ ٹوکن بعد میں VoIP نوٹیفکیشن بھیجنے کے لیے ایپ سرور کو بھیجا جاتا ہے۔ نیچے Swift میں PushKit رجسٹریشن اور ٹوکن حاصل کرنے کی مثال دی گئی ہے۔

PushKit رجسٹریشن ترتیب دینا

swift
import PushKit

let registry = PKPushRegistry(queue: DispatchQueue.main)
registry.delegate = self
registry.desiredPushTypes = [.voIP]

// MARK: - PKPushRegistryDelegate
func pushRegistry(
    _ registry: PKPushRegistry,
    didUpdate pushCredentials: PKPushCredentials,
    for type: PKPushType
) {
    let deviceToken = pushCredentials.token
        .map { String.format("%02x", $0) }
        .joined()
    sendVoIPTokenToServer(deviceToken)
}

PKPushType.voIP کے ساتھ desiredPushTypes کو کال کرنے کے بعد، سسٹم خود بخود VoIP نوٹیفکیشن وصول کرنے کی اجازت مانگتا ہے۔ pushRegistry:didUpdatePushCredentials:forType: میتھڈ میں، ایپ ڈیوائس ٹوکن کو Data کے طور پر وصول کرتی ہے، جسے ہیکس سٹرنگ میں تبدیل کر کے سرور کو بھیجا جاتا ہے۔ ٹوکن ہر ڈیوائس کے لیے منفرد ہے اور ایپ کو دوبارہ انسٹال کرنے پر بدل جاتا ہے — سرور کو ٹوکن اپ ڈیٹس کو ہینڈل کرنا چاہیے۔

آنے والی نوٹیفکیشن وصول کرنا

swift
func pushRegistry(
    _ registry: PKPushRegistry,
    didReceiveIncomingPushWith payload: PKPushPayload,
    for type: PKPushType,
    completion: @escaping VoidBlock
) {
    guard let caller = payload.dictionaryPayload["caller"] as? String else {
        completion()
        return
    }

    let update = CXCallUpdate()
    update.remoteHandle = CXHandle(type: .generic, value: caller)

    provider.reportNewIncomingCall(
        with: UUID(),
        update: update,
        completion: { error in
            if let error = error {
                print("Call error: \(error)")
            }
            completion()
        }
    )
}

didReceiveIncomingPushWith میتھڈ میں، ایپ کال ڈیٹا کے ساتھ پے لوڈ وصول کرتی ہے۔ کالر کی معلومات نکالنے کے بعد، آنے والی کال اسکرین دکھانے کے لیے CallKit فریم ورک سے CXCallUpdate بنایا جاتا ہے۔ پروسیسنگ کے بعد کمپلیشن ہینڈلر کو کال کرنا ضروری ہے — ورنہ سسٹم ٹائم آؤٹ کی وجہ سے ایپ کے عمل کو زبردستی ختم کر سکتا ہے۔ زیادہ سے زیادہ پروسیسنگ کا وقت 30 سیکنڈ ہے، جس کے بعد iOS نوٹیفکیشن کو غیر پروسیس شدہ سمجھتا ہے۔

CallKit کے ساتھ آنے والی کالز کو ہینڈل کرنا

PushKit CallKit کے ساتھ مضبوطی سے مربوط ہے — iOS پر سسٹم کال انٹرفیس دکھانے کے لیے ایک فریم ورک۔ جب ایپ PushKit کے ذریعے VoIP نوٹیفکیشن وصول کرتی ہے، تو اسے کال کے انتظام کے لیے CXProvider اور CXCallController بنانا ہوگا۔ CallKit خود بخود لاک اسکرین پر آنے والی کال اسکرین دکھاتا ہے، چاہے ایپ چھوٹی کی گئی ہو۔ نیچے CallKit فراہم کنندہ ترتیب دینے کی مثال دی گئی ہے۔

swift
let config = CXProviderConfiguration(localizedName: "MyApp")
config.supportsVideo = true
config.maximumCallGroups = 1
config.maximumCallsPerCallGroup = 1
config.supportedHandleTypes = [.phoneNumber, .generic]

let provider = CXProvider(configuration: config)
provider.setDelegate(self, queue: nil)

CXProviderConfiguration کال اسکرین کی ظاہری شکل اور رویے کی وضاحت کرتا ہے — ایپ کا نام، ویڈیو سپورٹ، بیک وقت کالز کی تعداد۔ VoIP ایپس کے لیے PushKit کا CallKit کے ساتھ انضمام لازمی ہے: اس کے بغیر، سسٹم آنے والی کال اسکرین نہیں دکھائے گا اور صارف کال سے محروم ہو جائے گا۔ Apple PushKit استعمال کرنے والی تمام ایپس کے لیے CallKit کے استعمال کی ضرورت ہے۔

خصوصیات اور حدود

PushKit کا استعمال Apple کی طرف سے مقرر کردہ کئی سخت پابندیوں کے ساتھ آتا ہے۔ فریم ورک صرف VoIP فعالیت کے لیے استعمال کیا جا سکتا ہے — PushKit کے ذریعے مارکیٹنگ نوٹیفکیشن بھیجنے کی کوئی بھی کوشش ایپ کو بلاک کرنے کا سبب بنے گی۔ پے لوڈ کا سائز 4 KB سے زیادہ نہیں ہونا چاہیے، اور اس میں صرف منسلکات کے بغیر JSON ڈیٹا ہو سکتا ہے۔ iOS 13 سے شروع کرتے ہوئے، Apple نے VoIP نوٹیفکیشن بھیجنے کی فریکوئنسی پر ایک حد لگا دی ہے — فی ڈیوائس فی منٹ ایک سے زیادہ نوٹیفکیشن نہیں۔ سرور کو اس حد کی پابندی کرنی چاہیے، ورنہ نوٹیفکیشن سسٹم کے ذریعے مسترد کر دی جائیں گی۔ PushKit iOS سمیلیٹر پر بھی کام نہیں کرتا — جانچ صرف فزیکل ڈیوائس پر ممکن ہے۔

PushKit پے لوڈ ساخت

VoIP نوٹیفکیشن پے لوڈ کسٹم کال ڈیٹا کے ساتھ ایک JSON ڈکشنری ہے۔ APNs کے برعکس، PushKit معیاری alert، badge اور sound فیلڈز کو سپورٹ نہیں کرتا — تمام ڈیٹا ڈویلپر کے ذریعے متعین کیا جاتا ہے۔ ایک عام ساخت میں کالر شناخت کنندہ (caller)، کال کی قسم (voice یا video)، کمرہ یا سیشن شناخت کنندہ اور ایک ٹائم سٹیمپ شامل ہوتا ہے۔ 4 KB کی حد میں جگہ بچانے کے لیے ہر فیلڈ کا سائز کم سے کم ہونا چاہیے۔ Apple پے لوڈ میں صرف لاک اسکرین پر آنے والی کال اسکرین دکھانے کے لیے ضروری ڈیٹا شامل کرنے کی سفارش کرتا ہے، اور باقی معلومات (اوتار، پیغام کی تاریخ) صارف کے جواب دینے کے بعد علیحدہ نیٹ ورک درخواست کے ذریعے لوڈ کرتا ہے۔ کم سے کم پے لوڈ کی مثال: { "caller": "انا", "caller_id": "+79161234567", "type": "audio", "room": "uuid-room-1234", "ts": 1718534400 }۔ ایپ ورژن کے درمیان مطابقت کے لیے پے لوڈ میں تمام کنجیاں چھوٹی، غیر مبہم اور سرور سائیڈ پر دستاویزی ہونی چاہئیں۔

خرابی ہینڈلنگ اور دوبارہ کوشش

PushKit کے ساتھ کام کرتے وقت، ترسیل کی ناکامیوں اور کنکشن کے نقصان کو ہینڈل کرنا ضروری ہے۔ اگر ڈیوائس آف لائن ہے یا نیٹ ورک سے منقطع ہے، تو VoIP نوٹیفکیشن نہیں پہنچائی جائے گی — PushKit ذخیرہ کرنے اور دوبارہ بھیجنے کی حمایت نہیں کرتا، APNs کے برعکس جو دوبارہ کوشش کے لیے 24 گھنٹے تک نوٹیفکیشن محفوظ کرتا ہے۔ سرور کو خود مختار طور پر غیر ترسیل شدہ نوٹیفکیشن کو ٹریک کرنا چاہیے اور کنکشن بحال ہونے پر دوبارہ کوشش کرنی چاہیے۔ اس کے لیے push kit feedback service میکانزم استعمال کیا جاتا ہے — یہ ناکامی کی وجہ کے ساتھ غیر ترسیل شدہ نوٹیفکیشن کی فہرست لوٹاتا ہے۔ سرور تجزیہ کے ذریعے VoIP نوٹیفکیشن کی ترسیل کی کامیابی کی نگرانی قائم کرنے اور کامیاب ترسیل کی شرح 95% سے نیچے گرنے پر ڈویلپر کو مطلع کرنے کی سفارش کی جاتی ہے۔ PushKit سسٹم صرف اس وقت ترسیل کی ضمانت دیتا ہے جب ڈیوائس میں فعال انٹرنیٹ کنکشن ہو — اس کی غیر موجودگی میں، نوٹیفکیشن مستقل طور پر ضائع ہو جاتی ہے، جو ضمانتی ترسیل کے ساتھ قابل اعتماد VoIP کال سسٹم ڈیزائن کرتے وقت غور کرنا اہم ہے۔

اکثر پوچھے گئے سوالات

PushKit کیا ہے؟

PushKit Apple کا ایک فریم ورک ہے جو کم تاخیر والی VoIP نوٹیفکیشن فراہم کرتا ہے جو ایپ کو بینر دکھائے بغیر آنے والی کال پر پس منظر میں جاگنے دیتا ہے۔ یہ میسنجر اور ویڈیو کال ایپس میں استعمال ہوتا ہے۔

PushKit APNs سے کیسے مختلف ہے؟

PushKit کی ترسیل کی ترجیح زیادہ ہے اور یہ صارف کو نوٹیفکیشن دکھائے بغیر ایپ کو پس منظر میں جگاتا ہے۔ APNs بینر کے ساتھ نوٹیفکیشن پہنچاتا ہے اور صارف کے تعامل کے بغیر کال پروسیس کرنے کے لیے ایپ کو نہیں جگا سکتا۔

کیا PushKit کے ساتھ CallKit کا استعمال لازمی ہے؟

ہاں، Apple سسٹم آنے والی کال اسکرین دکھانے کے لیے PushKit کو CallKit کے ساتھ مربوط کرنے کی ضرورت ہے۔ CallKit کے بغیر، ایپ لاک اسکرین پر آنے والی کال نہیں دکھا سکتی، جو VoIP فعالیت کو بیکار بنا دیتا ہے۔

PushKit ٹوکن کیسے حاصل کیا جائے؟

ٹوکن .voIP قسم کے ساتھ PKPushRegistry بنانے اور pushRegistry:didUpdatePushCredentials:forType: ڈیلیگیٹ میتھڈ کو لاگو کرنے کے بعد حاصل کیا جاتا ہے۔ ٹوکن Data کے طور پر منتقل کیا جاتا ہے اور سرور کو بھیجنے کے لیے ہیکس سٹرنگ میں تبدیل کیا جانا چاہیے۔

PushKit میں پے لوڈ سائز کی کیا حدود ہیں؟

PushKit کے لیے زیادہ سے زیادہ پے لوڈ سائز 4 KB ہے۔ ڈیٹا JSON فارمیٹ میں ہونا چاہیے۔ میڈیا منسلکات تعاون یافتہ نہیں ہیں۔ iOS 13 سے، فی ڈیوائس فی منٹ ایک سے زیادہ VoIP نوٹیفکیشن کی حد ہے۔

خلاصہ

  • PushKit ایک iOS فریم ورک ہے جو APNs کو نظرانداز کرتے ہوئے کم تاخیر والی VoIP نوٹیفکیشن فراہم کرتا ہے۔
  • ترسیل کی ترجیح APNs سے زیادہ ہے — نوٹیفکیشن 5 سیکنڈ میں پہنچ جاتی ہے۔
  • ایپ نوٹیفکیشن موصول ہونے پر پس منظر میں جاگ جاتی ہے، بغیر صارف کو بینر دکھائے۔
  • رجسٹریشن PKPushRegistry، PKPushType.voIP اور PKPushRegistryDelegate پروٹوکول کے ذریعے کی جاتی ہے۔
  • CallKit iOS پر سسٹم آنے والی کال اسکرین دکھانے کے لیے لازمی ہے۔
  • پے لوڈ 4 KB تک محدود، صرف JSON، iOS 13 سے فی منٹ ایک سے زیادہ نوٹیفکیشن نہیں۔
  • سفارش — PushKit صرف VoIP فعالیت کے لیے استعمال کریں، دیگر نوٹیفکیشن کے لیے APNs استعمال کریں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں