APNs अवलोकन
ऐप्पल पुश नोटिफिकेशन सर्विस (APNs) रिमोट नोटिफिकेशन फ़ीचर का केंद्र बिंदु है। यह ऐप डेवलपर्स के लिए आईओएस (और, अप्रत्यक्ष रूप से, वॉचओएस), टीवीओएस और मैकओएस डिवाइसों की जानकारी प्रसारित करने के लिए एक मजबूत, सुरक्षित और अत्यधिक कुशल सेवा है।
किसी उपयोगकर्ता के डिवाइस पर आपके ऐप के प्रारंभिक लॉन्च पर, सिस्टम स्वचालित रूप से आपके ऐप और एपीएन के बीच एक मान्यता प्राप्त, एन्क्रिप्टेड और लगातार आईपी कनेक्शन स्थापित करता है। यह कनेक्शन आपके ऐप को सूचनाएं प्राप्त करने के लिए सेटअप को निष्पादित करने की अनुमति देता है, जैसा कि दूरस्थ सूचना समर्थन को कॉन्फ़िगर करने में समझाया गया है।
सूचनाएं भेजने के लिए कनेक्शन का दूसरा हिस्सा- प्रदाता सर्वर और APNs के बीच लगातार, सुरक्षित चैनल - आपके ऑनलाइन डेवलपर खाते में कॉन्फ़िगरेशन और Apple द्वारा आपूर्ति किए गए क्रिप्टोग्राफ़िक प्रमाणपत्रों के उपयोग की आवश्यकता है। एक प्रदाता एक सर्वर है, जिसे आप तैनात करते हैं और प्रबंधित करते हैं, जिसे आप एपीएन के साथ काम करने के लिए कॉन्फ़िगर करते हैं। चित्र 1-1 दूरस्थ सूचना के लिए वितरण का मार्ग दिखाता है।
चित्र 1-1 एक प्रदाता से एक अनुप्रयोग के लिए एक दूरस्थ सूचना देने
अपने प्रदाताओं और अपने ऐप पर पुश सूचना सेटअप पूरा करने के बाद, आपके प्रदाता तब APN को अधिसूचना अनुरोध भेज सकते हैं। APN प्रत्येक लक्षित डिवाइस पर संबंधित सूचना पेलोड को बताता है। एक अधिसूचना प्राप्त होने पर, सिस्टम डिवाइस पर उचित एप्लिकेशन को पेलोड वितरित करता है, और उपयोगकर्ता के साथ बातचीत का प्रबंधन करता है।
यदि आपके ऐप के लिए एक अधिसूचना संचालित डिवाइस के साथ आती है, लेकिन ऐप नहीं चल रहा है, तो सिस्टम अभी भी अधिसूचना प्रदर्शित कर सकता है। यदि APNs एक सूचना भेजता है, तो उपकरण बंद कर दिया जाता है, APN अधिसूचना पर चलता है और बाद में फिर से कोशिश करता है (विवरण के लिए, सेवा की गुणवत्ता, स्टोर-और-फॉरवर्ड और समन्वित अधिसूचना देखें)।
प्रदाता जिम्मेदारियां
आपके प्रदाता सर्वरों में APN के साथ भाग लेने के लिए निम्नलिखित जिम्मेदारियाँ हैं:
- एपीएन के माध्यम से प्राप्त करना, विश्व स्तर पर अद्वितीय, ऐप-विशिष्ट डिवाइस टोकन और उपयोगकर्ता उपकरणों के लिए आपके ऐप के उदाहरणों से अन्य प्रासंगिक डेटा। यह एक प्रदाता को आपके ऐप के प्रत्येक चल रहे उदाहरण के बारे में जानने की अनुमति देता है।
- आपके सूचना प्रणाली के डिज़ाइन के अनुसार निर्धारण करना, जब प्रत्येक डिवाइस को दूरस्थ सूचनाएं भेजने की आवश्यकता होती है।
- APN को सूचना अनुरोध का निर्माण और भेजना, प्रत्येक अनुरोध जिसमें एक सूचना पेलोड और वितरण जानकारी है; तब APN आपकी ओर से इच्छित उपकरणों को संबंधित सूचनाएं भेजता है।
प्रत्येक दूरस्थ अधिसूचना अनुरोध के लिए एक प्रदाता भेजता है, यह होना चाहिए:
- रिमोट नोटिफिकेशन पेलोड बनाने में वर्णित अधिसूचना के पेलोड वाले JSON शब्दकोश का निर्माण करें।
- पेलोड जोड़ें, एक विश्व स्तर पर अद्वितीय डिवाइस टोकन, और एक HTTP / 2 अनुरोध के लिए अन्य वितरण जानकारी। डिवाइस टोकन के बारे में जानकारी के लिए, एपीएन-टू-डिवाइस कनेक्शन ट्रस्ट और डिवाइस टोकन देखें। HTTP / 2 अनुरोध प्रारूप और APN से संभावित प्रतिक्रियाओं और त्रुटियों के बारे में जानकारी के लिए, APNs के साथ संवाद करना देखें।
- लगातार, सुरक्षित चैनल पर टोकन या प्रमाणपत्र के रूप में क्रिप्टोग्राफ़िक क्रेडेंशियल्स सहित APNs के लिए HTTP / 2 अनुरोध भेजें।
- इस सुरक्षित चैनल की स्थापना सुरक्षा वास्तुकला में वर्णित है।
कई प्रदाताओं का उपयोग करना
चित्र 1-2 में वर्चुअल नेटवर्क के प्रकार को दर्शाया गया है जो APN आपके ऐप्स को चलाने वाले उपकरणों के लिए सक्षम करता है। सूचना लोड को संभालने के लिए, आप आम तौर पर कई प्रदाताओं को तैनात करेंगे, जिनमें से प्रत्येक एपीएन के लिए अपने स्वयं के लगातार और सुरक्षित कनेक्शन के साथ होगा। प्रत्येक प्रदाता तब किसी भी उपकरण को लक्षित करने के लिए अधिसूचना अनुरोध भेज सकता है जिसके लिए प्रदाता के पास एक मान्य उपकरण टोकन है।
चित्रा 1-2 कई प्रदाताओं से कई उपकरणों के लिए दूरस्थ सूचनाएं धक्का
सेवा की गुणवत्ता, स्टोर-एंड-फॉरवर्ड, और कॉलेस्ड नोटिफिकेशन
Apple Push Notification सेवा में एक गुणवत्ता सेवा (QoS) घटक शामिल है जो एक स्टोर-एंड-फ़ॉरवर्ड फ़ंक्शन करता है। यदि APN एक सूचना देने का प्रयास करता है और गंतव्य डिवाइस ऑफ़लाइन है, APN सीमित समय के लिए अधिसूचना को संग्रहीत करता है और डिवाइस के फिर से उपलब्ध होने पर उसे डिलीवर करता है। यह घटक केवल डिवाइस और प्रति ऐप के लिए सबसे हालिया अधिसूचना संग्रहीत करता है। यदि कोई डिवाइस ऑफ़लाइन है, तो उस डिवाइस को लक्षित करने के लिए एक अधिसूचना अनुरोध भेजकर पिछले अनुरोध को त्याग दिया जाता है। यदि कोई उपकरण लंबे समय तक ऑफ़लाइन रहता है, तो एपीएन में उसकी सभी संग्रहीत सूचनाएं खारिज कर दी जाती हैं।
समान सूचनाओं के समन्वय की अनुमति देने के लिए, आप एक अधिसूचना अनुरोध के भीतर एक पतन पहचानकर्ता को शामिल कर सकते हैं। आम तौर पर, जब कोई डिवाइस ऑनलाइन होता है, तो प्रत्येक सूचना का अनुरोध होता है कि आप डिवाइस को दिए गए नोटिफिकेशन में एपीएन परिणाम भेजते हैं। हालाँकि, जब आपके HTTP / 2 अनुरोध हेडर में एप्स-पतन-आईडी कुंजी मौजूद होती है, तो APNs उन अनुरोधों को ले लेता है जिनके मूल्य के लिए कुंजी समान होती है। उदाहरण के लिए, एक समाचार सेवा जो एक ही शीर्षक को दो बार भेजती है, दोनों अनुरोधों के लिए एक ही संक्षिप्त पहचानकर्ता का उपयोग कर सकती है। तब APN डिवाइस के लिए वितरण के लिए एक ही अधिसूचना में दो अनुरोधों को समेट लेगा। एपन्स-पतन-आईडी कुंजी पर विवरण के लिए।
सुरक्षा वास्तुकला
APNs ट्रस्ट के दो स्तरों का उपयोग करके एंड-टू-एंड, क्रिप्टोग्राफ़िक सत्यापन और प्रमाणीकरण को लागू करता है: कनेक्शन ट्रस्ट और डिवाइस टोकन ट्रस्ट।
कनेक्शन ट्रस्ट प्रदाताओं और एपीएन के बीच और एपीएन और उपकरणों के बीच काम करता है।
डिवाइस टोकन ट्रस्ट प्रत्येक दूरस्थ सूचना के लिए एंड-टू-एंड काम करता है। यह सुनिश्चित करता है कि सूचनाएं केवल सही शुरुआत (प्रदाता) और अंत (डिवाइस) बिंदुओं के बीच ही रूट की जाती हैं।
डिवाइस टोकन एक अपारदर्शी NSData उदाहरण है जिसमें Apple द्वारा विशिष्ट डिवाइस पर एक विशिष्ट एप्लिकेशन को निर्दिष्ट एक अद्वितीय पहचानकर्ता होता है। केवल APN डिवाइस टोकन की सामग्री को डिकोड और पढ़ सकते हैं। APNs के साथ पंजीकृत होने पर प्रत्येक एप्लिकेशन इंस्टेंस को अपना अनूठा डिवाइस टोकन प्राप्त होता है, और उसके बाद उसके प्रदाता को टोकन अग्रेषित करना चाहिए, जैसा कि दूरस्थ सूचना समर्थन को कॉन्फ़िगर करने में वर्णित है। प्रदाता को प्रत्येक पुश अधिसूचना अनुरोध में डिवाइस टोकन शामिल करना होगा जो संबंधित डिवाइस को लक्षित करता है; APNs डिवाइस टोकन का उपयोग यह सुनिश्चित करने के लिए करता है कि अधिसूचना केवल अनन्य ऐप-डिवाइस संयोजन के लिए वितरित की गई है जिसके लिए यह इरादा है।
APN कई कारणों से एक नया उपकरण टोकन जारी कर सकता है:
- उपयोगकर्ता आपके ऐप को एक नए डिवाइस पर इंस्टॉल करता है
- उपयोगकर्ता बैकअप से डिवाइस को पुनर्स्थापित करता है
- उपयोगकर्ता ऑपरेटिंग सिस्टम को पुनर्स्थापित करता है
- अन्य प्रणाली-परिभाषित घटनाएं
परिणामस्वरूप, ऐप को लॉन्च के समय डिवाइस के टोकन का अनुरोध करना चाहिए, जैसा कि एपीएन-टू-डिवाइस कनेक्शन ट्रस्ट और डिवाइस टोकन में वर्णित है। कोड उदाहरणों के लिए, दूरस्थ सूचनाएँ प्राप्त करने के लिए पंजीकरण देखना।
APN के साथ HTTP / 2-आधारित TLS सत्रों को स्थापित करने के लिए, आपको यह सुनिश्चित करना होगा कि आपके प्रत्येक प्रदाता पर GeoTrust Global CA रूट प्रमाणपत्र स्थापित हो। यदि कोई प्रदाता macOS चला रहा है, तो यह रूट प्रमाणपत्र मुख्य रूप से किचेन में है। अन्य प्रणालियों पर, इस प्रमाणपत्र को स्पष्ट स्थापना की आवश्यकता हो सकती है। आप इस प्रमाण पत्र को जियोट्रस्ट रूट सर्टिफिकेट वेबसाइट से डाउनलोड कर सकते हैं। यहाँ प्रमाण पत्र के लिए एक सीधा लिंक है।
चित्र 1-3 ट्रस्ट स्थापित करने के लिए HTTP / 2-आधारित APNs प्रदाता API का उपयोग करके, और सूचनाएं भेजने के लिए JWT प्रदाता प्रमाणीकरण टोकन का उपयोग करके दिखाता है।
चित्र 1-3 टोकन आधारित प्रदाता कनेक्शन ट्रस्ट की स्थापना और उपयोग करना
जैसा कि चित्र 1-3 में दिखाया गया है, टोकन-आधारित प्रदाता ट्रस्ट निम्नानुसार काम करता है:
आपका प्रदाता परिवहन परत सुरक्षा (टीएलएस) का उपयोग करके एपीएन के साथ एक सुरक्षित कनेक्शन के लिए पूछता है, जो आंकड़ा में "टीएलएस दीक्षा" नामक तीर के रूप में दर्शाया गया है।
तब APN आपके प्रदाता को एक APNs प्रमाणपत्र देता है, जो कि आंकड़े में अगले तीर ("APNs प्रमाणपत्र") के रूप में दर्शाया जाता है, जिसे तब आपका प्रदाता मान्य करता है।
इस बिंदु पर, कनेक्शन ट्रस्ट स्थापित किया गया है और आपका प्रदाता सर्वर टोकन आधारित रिमोट पुश अधिसूचना अनुरोधों को एपीएन को भेजने में सक्षम है। प्रत्येक सूचना का अनुरोध है कि आपका प्रदाता भेजता है एक JWT प्रमाणीकरण टोकन के साथ होना चाहिए, "नोटरी पुश" नामक तीर के रूप में चित्र में दिखाया गया है।
APN प्रत्येक पुश का उत्तर देता है, जिसे "HTTP / 2 प्रतिक्रिया" लेबल वाले तीर के रूप में दर्शाया गया है।
इस चरण के लिए आपके प्रदाता को प्राप्त होने वाली प्रतिक्रियाओं की बारीकियों के लिए, एपीएन से HTTP / 2 रिस्पांस देखें।
1-4 चित्र एक प्रदाता और APN के बीच विश्वास स्थापित करने के लिए Apple द्वारा जारी SSL प्रमाणपत्र के उपयोग को दर्शाता है। चित्र 1-3 के विपरीत, यह आंकड़ा एक अधिसूचना धक्का ही नहीं दिखाता है, लेकिन ट्रांसपोर्ट लेयर सिक्योरिटी (टीएलएस) कनेक्शन की स्थापना पर रुक जाता है। प्रमाणपत्र-आधारित विश्वास योजना में, पुश अधिसूचना अनुरोधों को प्रमाणित नहीं किया जाता है, लेकिन वे साथ वाले डिवाइस टोकन का उपयोग करके मान्य किए जाते हैं।
चित्र 1-4 प्रमाणपत्र-आधारित प्रदाता कनेक्शन ट्रस्ट की स्थापना
जैसा कि चित्र 1-4 में दिखाया गया है, प्रमाणपत्र-आधारित प्रदाता-से-एपीएनएस ट्रस्ट इस प्रकार काम करता है:
आपका प्रदाता परिवहन परत सुरक्षा (टीएलएस) का उपयोग करके एपीएन के साथ एक सुरक्षित कनेक्शन के लिए पूछता है, जो आंकड़ा में "टीएलएस दीक्षा" नामक तीर के रूप में दर्शाया गया है।
तब APN आपके प्रदाता को एक APNs प्रमाणपत्र देता है, जो कि आंकड़े में अगले तीर ("APNs प्रमाणपत्र") के रूप में दर्शाया जाता है, जिसे तब आपका प्रदाता मान्य करता है।
आपके प्रदाता को अपना Apple-प्रोवाइडर प्रदाता प्रमाणपत्र (जो आपने पहले अपने ऑनलाइन डेवलपर खाते से प्राप्त किया है, भेजना चाहिए, जैसा कि Xcode सहायता में "एक सार्वभौमिक APNs क्लाइंट एसएसएल प्रमाणपत्र जेनरेट करें") APNs में वापस भेजा गया है, जिसे तीर द्वारा "प्रदाता" के रूप में दर्शाया गया है। प्रमाण पत्र। "
APN आपके प्रदाता प्रमाणपत्र को मान्य करता है, जिससे यह पुष्टि होती है कि कनेक्शन अनुरोध एक वैध प्रदाता से उत्पन्न हुआ है, और आपके TLS कनेक्शन को स्थापित करता है।
इस बिंदु पर, कनेक्शन ट्रस्ट स्थापित किया गया है और आपका प्रदाता सर्वर सर्टिफिकेट-आधारित रिमोट पुश अधिसूचना अनुरोधों को APN को भेजने में सक्षम है।
APNs से डिवाइस कनेक्शन ट्रस्ट और डिवाइस टोकन
APN और प्रत्येक डिवाइस के बीच विश्वास आपके ऐप द्वारा भागीदारी के बिना स्वचालित रूप से स्थापित किया जाता है, जैसा कि इस खंड में वर्णित है।
प्रत्येक डिवाइस में एक क्रिप्टोग्राफ़िक प्रमाण पत्र और एक निजी क्रिप्टोग्राफ़िक कुंजी होती है, जो प्रारंभिक डिवाइस सक्रियण पर ऑपरेटिंग सिस्टम द्वारा प्रदान की जाती है और डिवाइस के किचेन में संग्रहीत होती है। सक्रियण के दौरान, एपीएन प्रमाण पत्र और कुंजी के आधार पर डिवाइस से कनेक्शन को प्रमाणित करता है और मान्य करता है, जैसा कि चित्र 6-5 में दिखाया गया है।
चित्र 1-5 डिवाइस और APN के बीच संबंध विश्वास स्थापित करना
जैसा कि चित्र 1-5 में दिखाया गया है, APNs-to-डिवाइस ट्रस्ट इस प्रकार काम करता है:
- ट्रस्ट बातचीत तब शुरू होती है जब उपकरण एपीएन के साथ टीएलएस कनेक्शन शुरू करता है, जैसा कि आंकड़े में शीर्ष तीर में दिखाया गया है।
- APN डिवाइस पर APNs प्रमाणपत्र लौटाता है।
- ऑपरेटिंग सिस्टम इस प्रमाणपत्र को मान्य करता है और फिर, जैसा कि "डिवाइस प्रमाणपत्र" तीर में दिखाया गया है, उपकरण प्रमाणपत्र को APN को भेजता है।
- अंत में, जैसा कि आंकड़े में नीचे तीर द्वारा दर्शाया गया है, APNs विश्वास स्थापित करते हुए, डिवाइस प्रमाणपत्र को मान्य करता है।
- एपीएन और डिवाइस के बीच स्थापित टीएलएस कनेक्शन के साथ, डिवाइस पर मौजूद ऐप दूरस्थ सूचनाओं के लिए ऐप-विशिष्ट डिवाइस टोकन प्राप्त करने के लिए एपीएन के साथ पंजीकरण कर सकते हैं। विवरण और कोड उदाहरणों के लिए, दूरस्थ सूचना समर्थन को कॉन्फ़िगर करने में दूरस्थ सूचनाएँ प्राप्त करने के लिए पंजीकरण देखना।
डिवाइस टोकन प्राप्त करने के बाद, एक ऐप को ऐप के संबंधित प्रदाता से कनेक्ट करना होगा और इसे टोकन को अग्रेषित करना होगा। यह कदम आवश्यक है क्योंकि एक प्रदाता को उपकरण टोकन को बाद में शामिल करना चाहिए जब यह उपकरण को लक्षित करते हुए, एपीएन को एक अधिसूचना अनुरोध भेजता है। टोकन अग्रेषित करने के लिए आप जो कोड लिखते हैं, वह रजिस्टर में दूरस्थ सूचना प्राप्त करने के लिए भी दिखाया जाता है।
क्या कोई उपयोगकर्ता पहली बार किसी उपकरण को सक्रिय कर रहा है, या क्या एपीएन ने एक नया उपकरण टोकन जारी किया है, प्रक्रिया समान है और चित्र 6-6 में दिखाया गया है।
चित्र 1-6 उपकरण टोकन का प्रबंधन
एप्लिकेशन-विशिष्ट उपकरण टोकन प्राप्त करना और संभालना निम्नानुसार काम करता है:
आपका ऐप दूरस्थ सूचनाओं के लिए APN के साथ पंजीकृत है, जैसा कि शीर्ष तीर में दिखाया गया है। यदि ऐप पहले से पंजीकृत है और ऐप-विशिष्ट डिवाइस टोकन नहीं बदला है, तो सिस्टम ऐप में मौजूदा टोकन को जल्दी से लौटाता है और यह प्रक्रिया चरण 4 पर पहुंच जाती है।
जब एक नए डिवाइस टोकन की आवश्यकता होती है, तो एपीएन डिवाइस के प्रमाण पत्र में निहित जानकारी का उपयोग करके एक उत्पन्न करता है। यह टोकन कुंजी का उपयोग करके टोकन को एन्क्रिप्ट करता है और इसे डिवाइस पर लौटाता है, जैसा कि बीच में दिखाया गया है, राइट-पॉइंटिंग तीर।
सिस्टम आपके एप्लिकेशन को कॉल करके डिवाइस टोकन को आपके ऐप पर वापस भेजता है: didRegisterForRemoteNotificationsWithDeviceToken: प्रतिनिधि विधि।
टोकन प्राप्त करने पर, आपके एप्लिकेशन (प्रतिनिधि विधि के भीतर) को अपने प्रदाता को बाइनरी या हेक्साडेसिमल प्रारूप में अग्रेषित करना होगा। आपका प्रदाता इस टोकन के बिना डिवाइस को सूचनाएं नहीं भेज सकता है। विवरण के लिए, दूरस्थ सूचना समर्थन को कॉन्फ़िगर करने में दूरस्थ सूचनाएं प्राप्त करने के लिए पंजीकरण देखें।
जरूरी
APNs डिवाइस टोकन वैरिएबल लंबाई के होते हैं। उनके आकार को हार्ड-कोड न करें।
जब आपका प्रदाता APNs को एक धक्का सूचना अनुरोध भेजता है, तो इसमें एक उपकरण टोकन शामिल होता है जो एक अद्वितीय ऐप-डिवाइस संयोजन की पहचान करता है। यह चरण चित्र 6-7 में प्रदाता और APN के बीच "टोकन, पेलोड" तीर में दिखाया गया है। APNs अनुरोध की वैधता सुनिश्चित करने और लक्ष्य डिवाइस को निर्धारित करने के लिए टोकन को डिक्रिप्ट करता है। यदि APN यह निर्धारित करते हैं कि प्रेषक और प्राप्तकर्ता वैध हैं, तो यह सूचना डिवाइस को सूचना भेजता है।
चित्र 1- प्रदाता से उपकरण तक दूरस्थ सूचना पथ
डिवाइस द्वारा अधिसूचना प्राप्त करने के बाद (और चित्र 1-7 में दिखाए गए अंतिम चरण के बाद), सिस्टम आपके ऐप को रिमोट नोटिफिकेशन फॉरवर्ड करता है।
Ref: Apple पुश अधिसूचना सेवा
अब, तकनीकी प्रवाह को समझने के लिए यहां देखें: iOS एप्लिकेशन पर Apple पुश अधिसूचना सेवा कैसे लागू करें?