PushKit — यह क्या है, VoIP के लिए push सूचना ढाँāचा

लेखक: IT Sectr प्रकाशित: 2026-06-16 पढ़ने का समय: 8 मिनट

PushKit एप्ल द्वारा push सूचनाओं की गारंटीड तुरंत डेलीवरी के लिए एक framework है, जो मुख्य रूप से 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 में पेश किया गया एक framework है जो 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 vs APNs: मुख्य अंतर

APNs (Apple Push Notification service) एक सार्वभौमिक push सूचना डेलीवरी सेवा है जो सभी एप्लिकेशन्स के लिए एक ही चैनल के माध्यम से संचालित होती है। जब चैनल भी80ड़ा होता है तो एप्ल 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 होता है। पेलोड का आकार 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 प्राप्त होने पर हालियों में एक मिस कॉल दिखाई देगी — यह उपभोक्ता को भ्रमित करता है

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 कान्फ़िगरेशन की आवश्यकता नहीं होती। पेलोड में कॉल पहचान के लिए न्यूनतम डेटा होना चाहिए।

json
// VoIP push पेलोड उदाहरण
{
    "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 टोकन का दिखना। यदि डेलीगेट कॉल नहीं होता है, तो अपने एप्लिकेशन के entitlement की जाँच करें।

एक और सामान्य समस्या एप्लिकेशन अपडेट के बाद 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 पेलोड का अधिकतम आकार क्या है?

PushKit के लिए अधिकतम पेलोड आकार 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 सूचनाएँ पहुँचाने के लिए एप्ल का framework।
  • 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें