PushKit एक iOS फ्रेमवर्क है जो मानक APNs को दरकिनार करते हुए कम विलंबता वाले VoIP नोटिफिकेशन प्रदान करता है। Apple Developer Documentation (2025) के अनुसार, PushKit बैकग्राउंड में भी 5 सेकंड के भीतर कॉल डिलीवरी की गारंटी देता है। VoIP नोटिफिकेशन सीधे प्रोसेस किए जाते हैं, बिना उपयोगकर्ता को बैनर दिखाए, जो फ्रेमवर्क को iOS पर मैसेंजर और वीडियो कॉल ऐप्स के लिए प्राथमिक टूल बनाता है।
मुख्य बिंदु
PushKit Apple का एक फ्रेमवर्क है, जो iOS 8 में पेश किया गया था, जो VoIP ऐप्लिकेशन के लिए कम विलंबता वाले push नोटिफिकेशन प्रदान करता है। मानक APNs (Apple Push Notification service) के विपरीत, PushKit ऐप को इनकमिंग कॉल प्राप्त होने पर बैकग्राउंड में जागने की अनुमति देता है, बिना उपयोगकर्ता को नोटिफिकेशन दिखाए। यह वॉयस और वीडियो कॉल ऐप्स के लिए महत्वपूर्ण है — उपयोगकर्ता तुरंत कॉल प्राप्त करता है, भले ही ऐप बंद हो। Apple WWDC 2024 के अनुसार, PushKit दुनिया भर में प्रतिदिन 2 बिलियन से अधिक VoIP नोटिफिकेशन प्रोसेस करता है।
तंत्र डिवाइस और Apple के push सर्वर के बीच सीधे कनेक्शन पर बनाया गया है, जो मानक नोटिफिकेशन चैनल को दरकिनार करता है। जब ऐप सर्वर VoIP नोटिफिकेशन भेजता है, तो यह एक समर्पित PushKit सर्वर से होकर गुजरता है और अधिकतम प्राथमिकता के साथ डिवाइस पर डिलीवर होता है। सिस्टम ऐप को बैकग्राउंड में जगाता है और डेलिगेट मेथड pushRegistry:didReceiveIncomingPushWithPayload:forType: को कॉल करता है। ऐप पेलोड प्राप्त करता है, कॉल प्रोसेस करता है, और पुष्टि के लिए कम्पलीशन हैंडलर को कॉल करता है। Apple के विनिर्देश के अनुसार, भेजने से लेकर प्रोसेसिंग तक का पूरा चक्र 5 सेकंड से अधिक नहीं लेता है।
PushKit और APNs के बीच मुख्य अंतर डिलीवरी तंत्र और प्रोसेसिंग में है। APNs बैनर, ध्वनि या बैज प्रदर्शित करने के लिए मानक नोटिफिकेशन चैनल का उपयोग करता है, जबकि PushKit बिना दृश्य नोटिफिकेशन के सीधे ऐप में डेटा डिलीवर करता है। नीचे मुख्य विशेषताओं की तुलना तालिका दी गई है।
| विशेषता | PushKit | APNs |
|---|---|---|
| डिलीवरी प्राथमिकता | उच्च (तत्काल डिलीवरी) | मध्यम (संभावित देरी) |
| ऐप जागरण | हां, बैकग्राउंड में | केवल नोटिफिकेशन टैप करने पर |
| बैनर प्रदर्शन | नहीं | हां (वैकल्पिक) |
| उपयोग | VoIP, कॉल, वीडियो कॉल | सभी प्रकार के नोटिफिकेशन |
| पेलोड | केवल JSON, कोई मीडिया नहीं | JSON + अटैचमेंट |
PushKit समृद्ध मीडिया अटैचमेंट का भी समर्थन नहीं करता और सामान्य मार्केटिंग नोटिफिकेशन के लिए उपयोग नहीं किया जा सकता। Apple PushKit के उपयोग को सख्ती से नियंत्रित करता है — ऐप में स्पष्ट VoIP कार्यक्षमता होनी चाहिए, अन्यथा इसे समीक्षा में अस्वीकार कर दिया जाएगा। APNs अन्य सभी परिदृश्यों के लिए सार्वभौमिक समाधान बना हुआ है।
PushKit का उपयोग करने के लिए, ऐप को PKPushRegistry के माध्यम से pushType .voIP के साथ रजिस्टर करना होगा। रजिस्ट्रेशन पहले लॉन्च पर एक बार किया जाता है, जिसके बाद सिस्टम एक अद्वितीय push टोकन उत्पन्न करता है और इसे डेलिगेट के माध्यम से पास करता है। यह टोकन बाद में VoIP नोटिफिकेशन भेजने के लिए ऐप सर्वर को भेजा जाता है। नीचे Swift में PushKit रजिस्ट्रेशन और टोकन प्राप्त करने का उदाहरण दिया गया है।
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 के रूप में प्राप्त करता है, जिसे हेक्स स्ट्रिंग में बदलकर सर्वर को भेजा जाता है। टोकन प्रत्येक डिवाइस के लिए अद्वितीय है और ऐप को पुनः इंस्टॉल करने पर बदल जाता है — सर्वर को टोकन अपडेट को संभालना चाहिए।
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 नोटिफिकेशन को अप्रोसेस्ड मानता है।
PushKit CallKit के साथ कसकर एकीकृत है — iOS पर सिस्टम कॉल इंटरफ़ेस प्रदर्शित करने के लिए एक फ्रेमवर्क। जब ऐप PushKit के माध्यम से VoIP नोटिफिकेशन प्राप्त करता है, तो उसे कॉल प्रबंधित करने के लिए CXProvider और CXCallController बनाना होगा। CallKit स्वचालित रूप से लॉक स्क्रीन पर इनकमिंग कॉल स्क्रीन दिखाता है, भले ही ऐप छोटा किया गया हो। नीचे CallKit प्रोवाइडर सेट करने का उदाहरण दिया गया है।
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 सिम्युलेटर पर भी काम नहीं करता — परीक्षण केवल भौतिक डिवाइस पर ही संभव है।
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 Apple का एक फ्रेमवर्क है जो कम विलंबता वाले VoIP नोटिफिकेशन प्रदान करता है जो ऐप को बिना बैनर दिखाए इनकमिंग कॉल पर बैकग्राउंड में जागने की अनुमति देता है। इसका उपयोग मैसेंजर और वीडियो कॉल ऐप्स में किया जाता है।
PushKit की डिलीवरी प्राथमिकता अधिक है और यह उपयोगकर्ता को नोटिफिकेशन दिखाए बिना ऐप को बैकग्राउंड में जगाता है। APNs बैनर के साथ नोटिफिकेशन प्रदान करता है और उपयोगकर्ता की सहभागिता के बिना कॉल प्रोसेस करने के लिए ऐप को नहीं जगा सकता।
हां, Apple को सिस्टम इनकमिंग कॉल स्क्रीन प्रदर्शित करने के लिए PushKit को CallKit के साथ एकीकृत करने की आवश्यकता है। CallKit के बिना, ऐप लॉक स्क्रीन पर इनकमिंग कॉल नहीं दिखा सकता, जिससे VoIP कार्यक्षमता बेकार हो जाती है।
टोकन .voIP प्रकार के साथ PKPushRegistry बनाने और pushRegistry:didUpdatePushCredentials:forType: डेलिगेट मेथड को लागू करने के बाद प्राप्त होता है। टोकन Data के रूप में पास किया जाता है और सर्वर को भेजने के लिए हेक्स स्ट्रिंग में परिवर्तित किया जाना चाहिए।
PushKit के लिए अधिकतम पेलोड आकार 4 KB है। डेटा JSON प्रारूप में होना चाहिए। मीडिया अटैचमेंट समर्थित नहीं हैं। iOS 13 से, प्रति डिवाइस प्रति मिनट एक से अधिक VoIP नोटिफिकेशन की सीमा है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें