PushKit — یہ کیا ہے، VoIP کے لیے push اطلاعات کا فریم ورک

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

PushKit ایپل کا ایک فریم ورک ہے جو ضمانتی فوری ٹرانسمشن کے ساائل push اطلاعات پہونچانے کے لیے، بنیادی طور پر VoIP ایپلیکیشنز کے لیے ڈزائن کیا گیا ہے۔ معیاری APNs (Apple Push Notification service) کے برعکس، جو تاخیر یا گروپ کی جا سکتی ہیں، PushKit ڈیوائس اور ایپل کے سرورز کے درمیان ایک مستقل TCP کنیکشن استعمال کرتا ہے۔ Apple Developer Documentation, 2026 کے مطابق، PushKit 500 ملی سیک橁ڈ سے کم اینڈ-ٹو-اینڈ ٹرانسمشن لیٹنسی فراہم کرتا ہے، جو ریال ٹائم ایپلیکیشنز — وائس اور ویڈیو کالز — کے لیے انتہائی اہم ہے۔

اہم نکات

  • PushKit — VoIP، Location اور FileProvider اقسام کے لیے اعلی ترجیح کے ساتھ push اطلاعات پہونچانے کا فریم ورک۔
  • PKPushRegistry — اطلاعات کی اقسام رجسٹر کرنے اور آنے والے push پیغامات وصول کرنے کے لیے بنیادی کلاس۔
  • VoIP push — iOS 13 سے PushKit کا واحد جائز استعمال، آنے والی کال کا فوری اشارہ فراہم کرتا ہے۔
  • مستقل TCP کنیکشن — PushKit کی تکنیکی بنیاد، APNs کی تاخیری خصوصیات کے بغیر ٹرانسمشن کی ضمانت دیتا ہے۔
  • CallKit کے ساتھ جوڑی — PushKit اطلاع پہونچاتا ہے، CallKit سسٹم کال سکرین ڈسپلے کرتا ہے، ایک متحد صارف تجربہ فراہم کرتا ہے۔

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

PushKit ایپل کا ایک فریم ورک ہے جو iOS 8 میں متعارف کرایا گیا، جو APNs سرورز سے مستقل کنیکشن کے ذریعے ضمانتی ترجیح کے ساتھ push اطلاعات کی ٹرانسمشن کا میکانزم فراہم کرتا ہے۔ عام اطلاعات کے برعکس جو ایک سی APNs چینل سے گزرتی ہیں اور تاخیر ہو سکتی ہیں، PushKit اطلاعات اعلی ترجیح کے ساتھ ایک مخصوصی سٹریم استعمال کرتی ہیں، جو قریبن ریال ٹائم ٹرانسمشن کی ضمانت دیتی ہے۔

تکنیکی طور پر، PushKit ڈیوائس اور ایپل کے push سرورز کے درمیان ایک مستقل TCP کنیکشن کے ذریعے کام کرتا ہے۔ جب کوئی سرور VoIP اطلاع بھیجتا ہے، کنیکشن اسے فورا ڈیوائس پر پہونچاتا ہے، جو ایپلیکیشن کو جگاتا ہے اور PKPushRegistry ڈیلیگٹ کو کال کرتا ہے۔ ایپلیکیشن کا فعال حالت میں ہونا ضروری نہیں ہے — PushKit اسے بیک گراؤنڈ، ختم شدہ حالت، یا ڈیوائس ریبوٹ کے بعد بھی جگا سکتا ہے۔

Microsoft Research (2024) کے موبائل پلیٹ فارمز پر push اطلاعات کی تاخیر پر تحقیق کے مطابق، PushKit اطلاعات کا اوسط وسطی 120–350 ms ہے، جبکہ معیاری APNs اطلاعات کا اوسط وسطی 1–5 سیک橁ڈ ہے۔ یہ بنیادی فرق مخصوصی TCP چینل اور ایپل کی جانب سے ترجیحی پروسیسنگ سے سمجھایا گیا ہے۔

PushKit کیس اطلاعات کی اقسام کی حمایت کرتا ہے?

PushKit چار اقسام کی حمایت کرتا ہے: VoIP (کالز کے لیے)، Complication (گھڑی کے ڈائل ڈیٹا کے لیے)، FileProvider (فائل مطابقت کے لیے)، اور PushToTalk (واکی-ٹاکی کے کاموں کے لیے)۔ iOS 13 سے، صرف VoIP قسم تیسرے فریق کے ڈیویلپرز کے لیے وسیع پیمانے پر دستیاب ہے۔ Complication اور FileProvider کی مخصوصی اپلیکیشنز ہیں اور ایپل کے اپنے ایکو سسٹمز تک محدود ہیں۔

PushKit قسممقصددستیابی
VoIPآنے والی وائس اور ویڈیو کال کا اشارہiOS 8+, App Store
ComplicationApple Watch کے چہروں پر ڈیٹا اپ ڈیٹ کرناwatchOS 6+
FileProviderFile Provider Extension میں نئی فائلوں کا سیگنلiOS 11+, محدود
PushToTalkکاروباری ایپلیکیشنز میں واکی-ٹاکی کا کامiOS 16+, محدود رسائی

PushKit بنام APNs: بنیادی فرق

APNs (Apple Push Notification service) ایک آلمگیر push اطلاعات کی خدمت ہے جو تمام ایپلیکیشنز کے لیے ایک سی چینل کے ذریعے کام کرتی ہے۔ جب چینل مصروف ہوتا ہے تو ایپل APNs اطلاعات کو بفر کر سکتا ہے، گروپ کر سکتا ہے، یا ضائع بھی کر سکتا ہے۔ دوسری جانب، PushKit ہر اطلاع کی قسم کے لیے ایک مخصوصی کنیکشن استعمال کرتا ہے، اور ایپل بغیر بفر کے ہر VoIP push کی ٹرانسمشن کی ضمانت دیتا ہے۔

فرق وقت کے حساس مناظروں میں ظاہر ہوتا ہے: APNs کے ذریعے آنے والی ایک کال 10–30 سیک橁ڈ تاخیر سے آ سکتی ہے یا اگر ڈیوائس بجل بچت موڈ میں ہو تو بلکل نہیں آ سکتی۔ PushKit ڈیوائس کی حالت سے آزاد 100–500 ms میں وہی اطلاع پہونچاتا ہے، کیونکہ اس کا TCP چینل سسٹم کے ذریعے ترجیح کے ساتھ فعال رکھا جاتا ہے۔

خوبیوں کا موازنہ

پیرامیٹرPushKitAPNs
کنیکشن کی قسممستقل TCP (مخصوصی چینل)بفرنگ کے ساتھ مشترکہ چینل
اوسط وسطی تاخیر120–350 ms1–5 سیک橁ڈ
ایپلیکیشن جگاناہمیشہ، کسی بھی حالت سےصرف اگر ایپلیکیشن مارا نہ گیا ہو
Payload کا حجم5 KB تک4 KB تک
iOS گروپنگنہیںہاں

PushKit آرکیٹیکچر: PKPushRegistry اور PKPushPayload

PushKit کا آرکیٹیکچر PKPushRegistry کے ارد گرد بنا ہے — ایک آبجیکٹ جو ایپلیکیشن کو ایک مخصوص قسم کی اطلاعات وصول کرنے کے لیے رجسٹر کرتا ہے۔ ایپلیکیشن ایک PKPushRegistry انسٹینش بناتا ہے، ماطلوبہ قسم (مثلاً، PKPushTypeVoIP) متعین کرتا ہے، اور ایک ڈیلیگٹ مقرر کرتا ہے۔ رجسٹریشن کے بعد، سسٹم خودکار طور پر APNs سے کنیکشن برقرار رکھتا ہے اور ڈیلیگٹ کے ذریعے push اطلاعات پہونچاتا ہے۔

ہر اطلاع ایک PKPushPayload آبجیکٹ سے ظاہر کی جاتی ہے، جس میں سرور ڈیٹا کے ساتھ ایک dictionaryPayload ہوتا ہے۔ payload کا حجم 5 KB تک محدود ہے، جو کال کے میٹا ڈیٹا منتقل کرنے کے لیے کافی ہے: کال کرنے والے کا پہچاننی، کال کی قسم (آڈیو/ویڈیو)، رابطہ کا نام، اور سیشن ٹوکن۔ میڈیا سٹریم خود WebRTC یا کسی اور ریال ٹائم پروٹوکل کے ذریعے علاحدہ منتقل کی جاتی ہے۔

PKPushRegistry رجسٹریشن

swift
import PushKit

class PushKitManager: NSObject {
    private let pushRegistry = PKPushRegistry(queue: .main)
    
    func configure() {
        pushRegistry.delegate = self
        pushRegistry.desiredPushTypes = [.voIP]
    }
}

Push اطلاعات کا وصول اور پروسیسنگ

PushKit اطلاع موصول ہونے پر ڈیلیگٹ میٹہڈ کو کال کرتا ہے۔ اس مقام پر، ایپلیکیشن کو dictionaryPayload سے ڈیٹا نکالنا تہ اور فورا CallKit کے ذریعے کال ڈسپلے کرنا چاہیے، ورنہ سسٹم بیک گراؤنڈ ٹاسک ختم کر سکتا ہے۔ ایپل 30 سیک橁ڈ کے اندر پروسیسنگ مکمل کرنے کی تجویز کرتا ہے، لیکن VoIP کالز کے لیے پہلے سیک橁ڈ میں کال سکرین ڈکھانا انتہائی اہم ہے۔

swift
extension PushKitManager: PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didReceiveIncomingPushWith payload: PKPushPayload,
        for type: PKPushType
    ) {
        guard let caller =
            payload.dictionaryPayload["caller"] as? String
        else { return }
        
        CallKitManager.shared.reportIncomingCall(
            uuid: UUID(),
            handle: caller
        )
    }
}

iOS 13 کی پابندیاں اور PushKit استعمال کے قواعد

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

اب ہر PushKit اطلاع کو CallKit کے ذریعے فورا آنے والی کال ڈسپلے کرنا چاہیے۔ اگر سسٹم پتا لگاتا ہے کہ PushKit دوسرے مقاصد کے لیے استعمال ہو رہا ہے — مثلاً، کال ڈکھائے بغیر بیک گراؤنڈ مطابقت یا مواد اپ ڈیٹس — تو ایپلیکیشن جائزہ کے دوران مسترد کی جا سکتی ہے یا PushKit سروس سے نااہل کر دی جا سکتی ہے۔ ایپل نے iOS 13 سے شروع کرتے ہوئے بیک گراؤنڈ ڈیٹا اپ ڈیٹس کے لیے PushKit استعمال کرنے کی صلاحیت بھی ختم کر دی”

PushKit استعمال کے لیے ایپل کی سفارشات (iOS 13+)

  • ہر VoIP اطلاع push موصول ہونے کے 5 سیک橁ڈ کے اندر reportNewIncomingCall کو کال کرنا چاہیے
  • PushKit کو پنگز، مواد مطابقت، یا ٹوکن اپ ڈیٹس کے لیے استعمال نہ کریں — ان کے لیے background fetch ہے
  • سرور کو صرف تب ہی push بھیجنا چاہیے جب کئی حقیقی آنے والی کال ہو، پیش وری جگانے کے لیے نہیں
  • بعد کی کال کے بغیر push وصول کرنا Recents میں ایک میس کال ڈکھائے گا — یہ صارف کو پریشان کرتا ہے

Swift میں PushKit انضمام

مکمل PushKit انضمام میں رجسٹریشن، push ٹوکن حاصل کرنا، اور آنے والی اطلاعات کی هینڈلنگ شامل ہے۔ PushKit خودکار طور پر اطلاعات بھیجنے کی اجازت مانگتا ہے — PushKit کے لیے ایک اضافی UNUserNotificationCenter کال کی ضرورت نہیں ہے، لیکن ایپلیکیشن کی مقامی اطلاعات کے لیے ضروری ہو سکتی ہے۔ رجسٹریشن کے بعد، سسٹم push ٹوکن پہونچانے کے لیے pushRegistry:didUpdatePushCredentials کو کال کرتا ہے، جسے سرور کو بھیجنا چاہیے۔

swift
extension PushKitManager: PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didUpdate pushCredentials: PKPushCredentials,
        for type: PKPushType
    ) {
        let token = pushCredentials.token
            .map { String(format: "%02x", $0) }
            .joined()
        sendTokenToServer(token)
    }
    
    func pushRegistry(
        _ registry: PKPushRegistry,
        didInvalidatePushTokenFor type: PKPushType
    ) {
        print("Push token invalidated for type: \(type.rawValue)")
    }
}

سرور سے push اطلاعات بھیجنا

سرور کی جانب APNs کے ذریعے push-type = voip اور ہیڈر apns-push-type: voip کے ساتھ ایک PushKit اطلاع بھیجتا ہے۔ عام APNs کے برعکس، VoIP push اپنا خود کا سرٹیفکیٹ استعمال کرتا ہے اور topic کونفگریشن کی ضرورت نہیں ہیں۔ Payload میں کال کی شناخت کے لیے حد ادنی ڈیٹا ہونا چاہیے۔

json
// VoIP push payload کی مثال
{
    "aps": {
        "alert": {}
    },
    "caller": "+15551234567",
    "callerName": "Alice Johnson",
    "sessionId": "abc-123-def",
    "hasVideo": false
}

PushKit اطلاعات کی تشخیص اور ڈباگنگ

PushKit کی ڈباگنگ معیاری APNs سے زیادہ پیچیدہ ہے کیونکہ PushKit iOS سیمیولیٹر پر کام نہیں کرتا۔ تشخیص کے لیے ایک فزیکل iPhone یا iPad کی ضرورت ہے۔ صحیح کام کی پہلی نشانی شروع پر pushRegistry:didUpdatePushCredentials کا کال کرنا اور ایک مخصوص فارمیٹ (VoIP کے لیے 64 hex حروف) میں push ٹوکن کا ظاہر ہونا ہے۔ اگر ڈیلیگٹ کال نہیں ہوتا، تو اپنے ایپلیکیشن کے entitlements چیک کریں۔

ایک اور ام مسئلہ ایپلیکیشن اپ ڈیٹ کے بعد PushKit کا اطلاعات نہ پہونچانا ہے۔ ایسا تب ہوتا ہے جب push ٹوکن بدل گیا ہو لیکن سرور پرانے کا استعمال جاری رکھتا ہے۔ حل یہ ہے ایپلیکیشن شروع کرتے وقت سرور کو نیا ٹوکن بھیجیں اور pushRegistry:didInvalidatePushTokenForType کال ہونے پر غیر مستقل ٹوکنز ہٹائیں۔ ایپل عام APNs کے ذریعے ایک فال بیک میکانزم لاگو کرنے کی بھی سفارش کرتا ہے۔

عام مسائل اور ان کے حل

مسئلہوجہحل
didUpdatePushCredentials کال نہیں ہوتاentitlements موجود نہیں یا غلط قسمXcode میں Capabilities → Push Notifications + VoIP چیک کریں
push تاخیر سے آتا ہےڈیوائس لو پاور موڈ میں یا کمزور سیگنلPushKit ہارڈویئر کی محدودیات کو بائیپاس نہیں کر سکتا
ریسٹارٹ کے بعد اطلاعات نہیں آتیںایپلیکیشن دوبارہ انسٹل کرنے کے بعد push ٹوکن بدل گیانیا ٹوکن مانگیں اور سرور پر اپ ڈیٹ کریں
PushKit کے کارن App Store نے مسترد کیاPushKit کا استعمال کال کے علاوہ مقاصد کے لیے کیا گیایقینی بنائیں کہ ہر push reportNewIncomingCall میں مؤدی ہو

اکثر پوچے جانے والے سوالات

کیا میں CallKit کے بغیر PushKit استعمال کر سکتا ہوں?

تکنیکی طور پر ہاں، لیکن یہ بےکار ہوگا۔ iOS 13 سے، PushKit کا واحد جائز استعمال آنے والی کال کا اشارہ ہے، جسے ڈسپلے کے لیے CallKit درکار ہے۔ CallKit کے بغیر PushKit استعمال کرنے سے App Store پر ایپلیکیشن مسترد ہو جائے گی”

PushKit payload کا انتہائی حجم کیا ہے?

PushKit کے لیے انتہائی payload حجم 5 KB (5120 بائٹ) ہے۔ یہ عام APNs اطلاعات سے 1 KB زیادہ ہے، جو کال کے مزید میٹا ڈیٹا منتقل کرنے کی اجازت دیتا ہے۔

اگر میں PushKit استعمال کرنے والا ایپلیکیشن حٹا دوں تو کیا ہوگا?

ایپل ایپلیکیشن کو حٹانے پر خودکار طور پر push ٹوکن کو بائیل کر دیتا ہے۔ سرور کو بائیلیٹی کی اطلاع ملے گی اور اسے اس ٹوکن پر push بھیجنا بند کرنا چاہیے۔ بائیل ٹوکن پر push بھیجنا APNs غلطی 410 کا سبب بنے گا”

کیا PushKit macOS پر کام کرتا ہے?

PushKit macOS 10.14+ پر Mac Catalyst یا AppKit استعمال کرتے ہوئے بنائے گئے Mac ایپلیکیشنز کے لیے دستیاب ہے۔ کارکردگی iOS ورژن کے مکمل مساوی ہے، جس میں VoIP اطلاعات کی حمایت شامل ہے۔

میں کیسے تصدیق کروں کہ PushKit کنیکشن فعال ہے?

اپنا خود کا اینالیٹکس استعمال کریں: سرور سے push بھیجنے اور کلائنٹ پر didReceiveIncomingPushWithPayload کال کے درمیان کا وقت ٹریک کریں۔ 500 ms سے کم اوسط وقت PushKit کے درست کام کی نشاندہی کرتا ہے۔

خلاصہ

  • PushKit — ایک مستقل TCP کنیکشن استعمال کرتے ہوئے اور 500 ms سے کم تاخیر فراہم کرتے ہوئے اعلی ترجیح کے ساتھ push اطلاعات پہونچانے کا ایپل کا فریم ورک۔
  • PKPushRegistry ایپلیکیشن کو ایک مخصوص قسم — VoIP، Complication، FileProvider یا PushToTalk — کی اطلاعات وصول کرنے کے لیے رجسٹر کرتا ہے۔
  • iOS 13 سے، PushKit کا واحد جائز استعمال CallKit کے ذریعے آنے والی کال کا اشارہ ہے؛ PushKit کے ذریعے بیک گراؤنڈ ڈیٹا اپ ڈیٹس ممنوع ہیں۔
  • APNs سے فرق — بفرنگ کے بغیر مخصوصی TCP چینل اور کسی بھی حالت سے ضمانتی ایپلیکیشن جگانا۔
  • Payload 5 KB تک محدود؛ ہر VoIP push کو 5 سیک橁ڈ کے اندر reportNewIncomingCall کال کرنا چاہیے۔
  • PushKit کی تشخیص کے لیے ایک فزیکل ڈیوائس درکار ہے — سیمیولیٹر تعاون یابلا نہیں؛ ٹوکن کو ہر شروع پر اپ ڈیٹ کرنا چاہیے۔
  • PushKit + CallKit — VoIP ایپلیکیشنز کا معیاری مرکب: PushKit اطلاع پہونچاتا ہے، CallKit سسٹم کال سکرین ڈسپلے کرتا ہے۔

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

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

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

مزید پڑھیں