IOS पुश सूचनाएँ कैसे काम करती हैं?


99

IOS "पुश" सूचनाओं को उस डिवाइस के बिना किसी विशेष उपकरण तक कैसे पहुँचाया जाता है, जिसमें किसी सर्वर को पोल करने की आवश्यकता होती है?

उदाहरण के लिए, मान लें कि मुझे फेसबुक पर एक नया संदेश मिला है। फेसबुक Apple को सूचित करता है कि मेरे डिवाइस को इस तरह से एक सूचना प्राप्त होनी चाहिए। लेकिन ऐप्पल को यह कैसे पता चलता है कि किस डिवाइस / आईपी को मैसेज को पुश करना है?


2
@Wain मैं एक तकनीकी स्तर पर एक विस्तृत विवरण की तलाश में हूं। वह लेख अत्यंत उच्च स्तर का है। तो मेरा डिवाइस हर समय Apple के पुश सर्वर के साथ एक खुला संबंध रखता है?
एंडी हिन

Im Android पुश के साथ अधिक परिचित है, लेकिन आम तौर पर, जब आप ऐप इंस्टॉल करते हैं तो यह ऐप्पल के साथ एक अद्वितीय आईडी के साथ डिवाइस को पंजीकृत करता है। फिर जब फेसबुक ऐप्पल को एक संदेश भेजता है, तो ऐप्पल इसे यूनिक आईडी के लिए भेज देगा।
पनामा जैक

6
@Pjack yep, लेकिन मेरे डिवाइस के साथ लगातार अलग-अलग सेल टॉवर, अलग-अलग वाईफाई नेटवर्क बदलते रहते हैं, Apple अपने अद्वितीय आईडी के लिए IP को कैसे जानता है?
एंडी हिन

@whydna यह सवाल पूछने के लिए धन्यवाद। मैं ठीक वैसी ही बात समझना चाहता था। मेरा मानना ​​है कि यह मेरे सवाल का जवाब देता है: stackoverflow.com/questions/18859732/…
MightyMouse

@AndyHin डिवाइस OS (iOS) जानता है कि कौन से APNs सर्वर वैध हैं। डिवाइस इन सर्वरों से जुड़ रहा है और एक कनेक्शन खुला रख रहा है। यह कनेक्शन डिवाइस-आईडी और अन्य मेटा-डेटा (फोन नंबर) के साथ जुड़ा हुआ है। जब संदेश को "पुश" करने की आवश्यकता होती है, तो एपीएन सही कनेक्शन ढूंढता है और इसे पहले से खुले कनेक्शन को नीचे भेजता है। तो APN किसी डिवाइस से कनेक्शन स्थापित करने का प्रयास नहीं करता है, यह हमेशा वह डिवाइस होता है जो उस कनेक्शन को खोलता है। प्रति डिवाइस एक कनेक्शन।
टोड

जवाबों:


49

मेरे लिए यह एक टिप्पणी में बहुत ज्यादा था।

प्रलेखन से।

Apple पुश अधिसूचना सेवा (APN) उन सूचनाओं को प्राप्त करने के लिए पंजीकृत उपकरणों वाले पुश सूचनाओं को प्रचारित करती है। प्रत्येक डिवाइस सेवा के साथ एक मान्यता प्राप्त और एन्क्रिप्टेड आईपी कनेक्शन स्थापित करता है और इस लगातार कनेक्शन पर सूचनाएं प्राप्त करता है। प्रदाता अपने ग्राहक अनुप्रयोगों के लिए आने वाले डेटा की निगरानी करते हुए लगातार और सुरक्षित चैनल के माध्यम से एपीएन से जुड़ते हैं। जब किसी एप्लिकेशन का नया डेटा आता है, तो प्रदाता एपीएन को चैनल के माध्यम से एक अधिसूचना तैयार करता है और भेजता है, जो अधिसूचना को लक्ष्य डिवाइस पर धकेलता है।

मेरा सुझाव है कि अधिक जानकारी के लिए प्रलेखन का उपयोग करें और कैसे उपयोग करें और कॉन्फ़िगर करें। यह सब वहाँ है।

सूचनाएं भेजना


जवाब के लिए धन्यवाद।
माइटीहाउस

7
तो Apple आपके डिवाइस पर एक स्थिर IP रखता है?
CMCDragonkai

मुझे आश्चर्य हुआ जब मुझे समझ में आया कि मेरे सर्वर को APACH FOR EACH TARGET DEVICE को एक अधिसूचना भेजनी है! :(
व्लादिमीर

4
@CMCDragonkai डिवाइस कनेक्शन स्थापित करता है, न कि सर्वर।
हाईटेककंप्यूटरजेक

7
इसलिए उपकरण एपीएन सेवा के साथ हमेशा लंबे मतदान / सॉकेट प्रकार के कनेक्शन को बनाए रखते हैं? यदि ऐसा है तो APN सेवा इतने सारे कनेक्शनों को कैसे संभालती है - यदि कोई सर्वर 50k कनेक्शन पकड़ सकता है और उसके पास हमेशा 500 मिलियन उपयोगकर्ता होते हैं, तो सेवा को कम से कम 10000 सर्वरों की आवश्यकता होती है। क्या यह व्यावहारिक परिदृश्य है?
AV94

87

प्रत्येक डिवाइस को अपने स्वयं के अनूठे डिवाइस टोकन का उपयोग करके डेटा के साथ अपडेट किया जा सकता है। यह तस्वीर सब कुछ समझाती है। ।

यहां छवि विवरण दर्ज करें


किसी भी विचार डिवाइस टोकन का उपयोग क्या है? क्या इसका उपयोग APNS सर्वर और ऐप या कहीं और के बीच संचार को एन्क्रिप्ट करने के लिए किया जाता है?
मगें

1
@Mugen: उपकरण टोकन का उपयोग APNS द्वारा यह पता लगाने के लिए किया जाता है कि प्रदाता द्वारा भेजे गए पेलोड को आगे बढ़ाने के लिए कौन सा उपकरण चाहिए!
D4ttatraya

@ करण - क्या सूचनाओं के बीच एक अंतर है जो एक उपयोगकर्ता के लिए है (जैसे "अरे उपयोगकर्ता आपके पास एक संदेश है!") और जो एक ऐप को जगाने के लिए हैं और चुपचाप इसे कुछ पृष्ठभूमि प्रसंस्करण करने के लिए कहते हैं?
होवीकैंप

@Howiecamp यदि आप पुश अधिसूचना का उपयोग कर रहे हैं, तो जब भी ऐप चल रहा है तो आपको सूचना मिल जाएगी। साथ ही सक्रिय अधिसूचना विवरण सुलभ हैं, जब उपयोगकर्ता अधिसूचना केंद्र से अधिसूचना को टैप करता है और ऐप लॉन्च करता है। इस समय के दौरान आप उन प्रक्रियाओं को कर सकते हैं जो आप करना चाहते हैं।
करण अलंगत १६'१at को

@ कर्णअलैंगट, बैज काउंट को यहां कैसे संभाला जाता है? सर्वर इसके बारे में कैसे जानता है?
GvSharma

22

मैंने पुश सूचनाओं के वर्कफ़्लो को समझाने के लिए एक इन्फोग्राफिक बनाया। आशा है कि यह उपयोगी है।

यहां छवि विवरण दर्ज करें


22

APNs अवलोकन

ऐप्पल पुश नोटिफिकेशन सर्विस (APNs) रिमोट नोटिफिकेशन फ़ीचर का केंद्र बिंदु है। यह ऐप डेवलपर्स के लिए आईओएस (और, अप्रत्यक्ष रूप से, वॉचओएस), टीवीओएस और मैकओएस डिवाइसों की जानकारी प्रसारित करने के लिए एक मजबूत, सुरक्षित और अत्यधिक कुशल सेवा है।

किसी उपयोगकर्ता के डिवाइस पर आपके ऐप के प्रारंभिक लॉन्च पर, सिस्टम स्वचालित रूप से आपके ऐप और एपीएन के बीच एक मान्यता प्राप्त, एन्क्रिप्टेड और लगातार आईपी कनेक्शन स्थापित करता है। यह कनेक्शन आपके ऐप को सूचनाएं प्राप्त करने के लिए सेटअप को निष्पादित करने की अनुमति देता है, जैसा कि दूरस्थ सूचना समर्थन को कॉन्फ़िगर करने में समझाया गया है।

सूचनाएं भेजने के लिए कनेक्शन का दूसरा हिस्सा- प्रदाता सर्वर और APNs के बीच लगातार, सुरक्षित चैनल - आपके ऑनलाइन डेवलपर खाते में कॉन्फ़िगरेशन और Apple द्वारा आपूर्ति किए गए क्रिप्टोग्राफ़िक प्रमाणपत्रों के उपयोग की आवश्यकता है। एक प्रदाता एक सर्वर है, जिसे आप तैनात करते हैं और प्रबंधित करते हैं, जिसे आप एपीएन के साथ काम करने के लिए कॉन्फ़िगर करते हैं। चित्र 1-1 दूरस्थ सूचना के लिए वितरण का मार्ग दिखाता है।

चित्र 1-1 एक प्रदाता से एक अनुप्रयोग के लिए एक दूरस्थ सूचना देने

चित्र: ../Art/remote_notif_simple.jpg

अपने प्रदाताओं और अपने ऐप पर पुश सूचना सेटअप पूरा करने के बाद, आपके प्रदाता तब APN को अधिसूचना अनुरोध भेज सकते हैं। APN प्रत्येक लक्षित डिवाइस पर संबंधित सूचना पेलोड को बताता है। एक अधिसूचना प्राप्त होने पर, सिस्टम डिवाइस पर उचित एप्लिकेशन को पेलोड वितरित करता है, और उपयोगकर्ता के साथ बातचीत का प्रबंधन करता है।

यदि आपके ऐप के लिए एक अधिसूचना संचालित डिवाइस के साथ आती है, लेकिन ऐप नहीं चल रहा है, तो सिस्टम अभी भी अधिसूचना प्रदर्शित कर सकता है। यदि APNs एक सूचना भेजता है, तो उपकरण बंद कर दिया जाता है, APN अधिसूचना पर चलता है और बाद में फिर से कोशिश करता है (विवरण के लिए, सेवा की गुणवत्ता, स्टोर-और-फॉरवर्ड और समन्वित अधिसूचना देखें)।

प्रदाता जिम्मेदारियां

आपके प्रदाता सर्वरों में APN के साथ भाग लेने के लिए निम्नलिखित जिम्मेदारियाँ हैं:

  • एपीएन के माध्यम से प्राप्त करना, विश्व स्तर पर अद्वितीय, ऐप-विशिष्ट डिवाइस टोकन और उपयोगकर्ता उपकरणों के लिए आपके ऐप के उदाहरणों से अन्य प्रासंगिक डेटा। यह एक प्रदाता को आपके ऐप के प्रत्येक चल रहे उदाहरण के बारे में जानने की अनुमति देता है।
  • आपके सूचना प्रणाली के डिज़ाइन के अनुसार निर्धारण करना, जब प्रत्येक डिवाइस को दूरस्थ सूचनाएं भेजने की आवश्यकता होती है।
  • APN को सूचना अनुरोध का निर्माण और भेजना, प्रत्येक अनुरोध जिसमें एक सूचना पेलोड और वितरण जानकारी है; तब APN आपकी ओर से इच्छित उपकरणों को संबंधित सूचनाएं भेजता है।

प्रत्येक दूरस्थ अधिसूचना अनुरोध के लिए एक प्रदाता भेजता है, यह होना चाहिए:

  • रिमोट नोटिफिकेशन पेलोड बनाने में वर्णित अधिसूचना के पेलोड वाले JSON शब्दकोश का निर्माण करें।
  • पेलोड जोड़ें, एक विश्व स्तर पर अद्वितीय डिवाइस टोकन, और एक HTTP / 2 अनुरोध के लिए अन्य वितरण जानकारी। डिवाइस टोकन के बारे में जानकारी के लिए, एपीएन-टू-डिवाइस कनेक्शन ट्रस्ट और डिवाइस टोकन देखें। HTTP / 2 अनुरोध प्रारूप और APN से संभावित प्रतिक्रियाओं और त्रुटियों के बारे में जानकारी के लिए, APNs के साथ संवाद करना देखें।
  • लगातार, सुरक्षित चैनल पर टोकन या प्रमाणपत्र के रूप में क्रिप्टोग्राफ़िक क्रेडेंशियल्स सहित APNs के लिए HTTP / 2 अनुरोध भेजें।
  • इस सुरक्षित चैनल की स्थापना सुरक्षा वास्तुकला में वर्णित है।

कई प्रदाताओं का उपयोग करना

चित्र 1-2 में वर्चुअल नेटवर्क के प्रकार को दर्शाया गया है जो APN आपके ऐप्स को चलाने वाले उपकरणों के लिए सक्षम करता है। सूचना लोड को संभालने के लिए, आप आम तौर पर कई प्रदाताओं को तैनात करेंगे, जिनमें से प्रत्येक एपीएन के लिए अपने स्वयं के लगातार और सुरक्षित कनेक्शन के साथ होगा। प्रत्येक प्रदाता तब किसी भी उपकरण को लक्षित करने के लिए अधिसूचना अनुरोध भेज सकता है जिसके लिए प्रदाता के पास एक मान्य उपकरण टोकन है।

चित्रा 1-2 कई प्रदाताओं से कई उपकरणों के लिए दूरस्थ सूचनाएं धक्का

चित्र: ../rt/remote_notif_multiple.jpg

सेवा की गुणवत्ता, स्टोर-एंड-फॉरवर्ड, और कॉलेस्ड नोटिफिकेशन

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 टोकन आधारित प्रदाता कनेक्शन ट्रस्ट की स्थापना और उपयोग करना

चित्र: ../Art/service_provider_ct.jpg

जैसा कि चित्र 1-3 में दिखाया गया है, टोकन-आधारित प्रदाता ट्रस्ट निम्नानुसार काम करता है:

आपका प्रदाता परिवहन परत सुरक्षा (टीएलएस) का उपयोग करके एपीएन के साथ एक सुरक्षित कनेक्शन के लिए पूछता है, जो आंकड़ा में "टीएलएस दीक्षा" नामक तीर के रूप में दर्शाया गया है।

तब APN आपके प्रदाता को एक APNs प्रमाणपत्र देता है, जो कि आंकड़े में अगले तीर ("APNs प्रमाणपत्र") के रूप में दर्शाया जाता है, जिसे तब आपका प्रदाता मान्य करता है।

इस बिंदु पर, कनेक्शन ट्रस्ट स्थापित किया गया है और आपका प्रदाता सर्वर टोकन आधारित रिमोट पुश अधिसूचना अनुरोधों को एपीएन को भेजने में सक्षम है। प्रत्येक सूचना का अनुरोध है कि आपका प्रदाता भेजता है एक JWT प्रमाणीकरण टोकन के साथ होना चाहिए, "नोटरी पुश" नामक तीर के रूप में चित्र में दिखाया गया है।

APN प्रत्येक पुश का उत्तर देता है, जिसे "HTTP / 2 प्रतिक्रिया" लेबल वाले तीर के रूप में दर्शाया गया है।

इस चरण के लिए आपके प्रदाता को प्राप्त होने वाली प्रतिक्रियाओं की बारीकियों के लिए, एपीएन से HTTP / 2 रिस्पांस देखें।

1-4 चित्र एक प्रदाता और APN के बीच विश्वास स्थापित करने के लिए Apple द्वारा जारी SSL प्रमाणपत्र के उपयोग को दर्शाता है। चित्र 1-3 के विपरीत, यह आंकड़ा एक अधिसूचना धक्का ही नहीं दिखाता है, लेकिन ट्रांसपोर्ट लेयर सिक्योरिटी (टीएलएस) कनेक्शन की स्थापना पर रुक जाता है। प्रमाणपत्र-आधारित विश्वास योजना में, पुश अधिसूचना अनुरोधों को प्रमाणित नहीं किया जाता है, लेकिन वे साथ वाले डिवाइस टोकन का उपयोग करके मान्य किए जाते हैं।

चित्र 1-4 प्रमाणपत्र-आधारित प्रदाता कनेक्शन ट्रस्ट की स्थापना

छवि: ../Art/service_provider_ct_certificate_2x.png

जैसा कि चित्र 1-4 में दिखाया गया है, प्रमाणपत्र-आधारित प्रदाता-से-एपीएनएस ट्रस्ट इस प्रकार काम करता है:

आपका प्रदाता परिवहन परत सुरक्षा (टीएलएस) का उपयोग करके एपीएन के साथ एक सुरक्षित कनेक्शन के लिए पूछता है, जो आंकड़ा में "टीएलएस दीक्षा" नामक तीर के रूप में दर्शाया गया है।

तब APN आपके प्रदाता को एक APNs प्रमाणपत्र देता है, जो कि आंकड़े में अगले तीर ("APNs प्रमाणपत्र") के रूप में दर्शाया जाता है, जिसे तब आपका प्रदाता मान्य करता है।

आपके प्रदाता को अपना Apple-प्रोवाइडर प्रदाता प्रमाणपत्र (जो आपने पहले अपने ऑनलाइन डेवलपर खाते से प्राप्त किया है, भेजना चाहिए, जैसा कि Xcode सहायता में "एक सार्वभौमिक APNs क्लाइंट एसएसएल प्रमाणपत्र जेनरेट करें") APNs में वापस भेजा गया है, जिसे तीर द्वारा "प्रदाता" के रूप में दर्शाया गया है। प्रमाण पत्र। "

APN आपके प्रदाता प्रमाणपत्र को मान्य करता है, जिससे यह पुष्टि होती है कि कनेक्शन अनुरोध एक वैध प्रदाता से उत्पन्न हुआ है, और आपके TLS कनेक्शन को स्थापित करता है।

इस बिंदु पर, कनेक्शन ट्रस्ट स्थापित किया गया है और आपका प्रदाता सर्वर सर्टिफिकेट-आधारित रिमोट पुश अधिसूचना अनुरोधों को APN को भेजने में सक्षम है।

APNs से डिवाइस कनेक्शन ट्रस्ट और डिवाइस टोकन

APN और प्रत्येक डिवाइस के बीच विश्वास आपके ऐप द्वारा भागीदारी के बिना स्वचालित रूप से स्थापित किया जाता है, जैसा कि इस खंड में वर्णित है।

प्रत्येक डिवाइस में एक क्रिप्टोग्राफ़िक प्रमाण पत्र और एक निजी क्रिप्टोग्राफ़िक कुंजी होती है, जो प्रारंभिक डिवाइस सक्रियण पर ऑपरेटिंग सिस्टम द्वारा प्रदान की जाती है और डिवाइस के किचेन में संग्रहीत होती है। सक्रियण के दौरान, एपीएन प्रमाण पत्र और कुंजी के आधार पर डिवाइस से कनेक्शन को प्रमाणित करता है और मान्य करता है, जैसा कि चित्र 6-5 में दिखाया गया है।

चित्र 1-5 डिवाइस और APN के बीच संबंध विश्वास स्थापित करना

चित्र: ../Art/service_device_ct.jpg

जैसा कि चित्र 1-5 में दिखाया गया है, APNs-to-डिवाइस ट्रस्ट इस प्रकार काम करता है:

  • ट्रस्ट बातचीत तब शुरू होती है जब उपकरण एपीएन के साथ टीएलएस कनेक्शन शुरू करता है, जैसा कि आंकड़े में शीर्ष तीर में दिखाया गया है।
  • APN डिवाइस पर APNs प्रमाणपत्र लौटाता है।
  • ऑपरेटिंग सिस्टम इस प्रमाणपत्र को मान्य करता है और फिर, जैसा कि "डिवाइस प्रमाणपत्र" तीर में दिखाया गया है, उपकरण प्रमाणपत्र को APN को भेजता है।
  • अंत में, जैसा कि आंकड़े में नीचे तीर द्वारा दर्शाया गया है, APNs विश्वास स्थापित करते हुए, डिवाइस प्रमाणपत्र को मान्य करता है।
  • एपीएन और डिवाइस के बीच स्थापित टीएलएस कनेक्शन के साथ, डिवाइस पर मौजूद ऐप दूरस्थ सूचनाओं के लिए ऐप-विशिष्ट डिवाइस टोकन प्राप्त करने के लिए एपीएन के साथ पंजीकरण कर सकते हैं। विवरण और कोड उदाहरणों के लिए, दूरस्थ सूचना समर्थन को कॉन्फ़िगर करने में दूरस्थ सूचनाएँ प्राप्त करने के लिए पंजीकरण देखना।

डिवाइस टोकन प्राप्त करने के बाद, एक ऐप को ऐप के संबंधित प्रदाता से कनेक्ट करना होगा और इसे टोकन को अग्रेषित करना होगा। यह कदम आवश्यक है क्योंकि एक प्रदाता को उपकरण टोकन को बाद में शामिल करना चाहिए जब यह उपकरण को लक्षित करते हुए, एपीएन को एक अधिसूचना अनुरोध भेजता है। टोकन अग्रेषित करने के लिए आप जो कोड लिखते हैं, वह रजिस्टर में दूरस्थ सूचना प्राप्त करने के लिए भी दिखाया जाता है।

क्या कोई उपयोगकर्ता पहली बार किसी उपकरण को सक्रिय कर रहा है, या क्या एपीएन ने एक नया उपकरण टोकन जारी किया है, प्रक्रिया समान है और चित्र 6-6 में दिखाया गया है।

चित्र 1-6 उपकरण टोकन का प्रबंधन

चित्र: ../Art/token_generation.jpg

एप्लिकेशन-विशिष्ट उपकरण टोकन प्राप्त करना और संभालना निम्नानुसार काम करता है:

आपका ऐप दूरस्थ सूचनाओं के लिए APN के साथ पंजीकृत है, जैसा कि शीर्ष तीर में दिखाया गया है। यदि ऐप पहले से पंजीकृत है और ऐप-विशिष्ट डिवाइस टोकन नहीं बदला है, तो सिस्टम ऐप में मौजूदा टोकन को जल्दी से लौटाता है और यह प्रक्रिया चरण 4 पर पहुंच जाती है।

जब एक नए डिवाइस टोकन की आवश्यकता होती है, तो एपीएन डिवाइस के प्रमाण पत्र में निहित जानकारी का उपयोग करके एक उत्पन्न करता है। यह टोकन कुंजी का उपयोग करके टोकन को एन्क्रिप्ट करता है और इसे डिवाइस पर लौटाता है, जैसा कि बीच में दिखाया गया है, राइट-पॉइंटिंग तीर।

सिस्टम आपके एप्लिकेशन को कॉल करके डिवाइस टोकन को आपके ऐप पर वापस भेजता है: didRegisterForRemoteNotificationsWithDeviceToken: प्रतिनिधि विधि।

टोकन प्राप्त करने पर, आपके एप्लिकेशन (प्रतिनिधि विधि के भीतर) को अपने प्रदाता को बाइनरी या हेक्साडेसिमल प्रारूप में अग्रेषित करना होगा। आपका प्रदाता इस टोकन के बिना डिवाइस को सूचनाएं नहीं भेज सकता है। विवरण के लिए, दूरस्थ सूचना समर्थन को कॉन्फ़िगर करने में दूरस्थ सूचनाएं प्राप्त करने के लिए पंजीकरण देखें।

जरूरी

APNs डिवाइस टोकन वैरिएबल लंबाई के होते हैं। उनके आकार को हार्ड-कोड न करें।

जब आपका प्रदाता APNs को एक धक्का सूचना अनुरोध भेजता है, तो इसमें एक उपकरण टोकन शामिल होता है जो एक अद्वितीय ऐप-डिवाइस संयोजन की पहचान करता है। यह चरण चित्र 6-7 में प्रदाता और APN के बीच "टोकन, पेलोड" तीर में दिखाया गया है। APNs अनुरोध की वैधता सुनिश्चित करने और लक्ष्य डिवाइस को निर्धारित करने के लिए टोकन को डिक्रिप्ट करता है। यदि APN यह निर्धारित करते हैं कि प्रेषक और प्राप्तकर्ता वैध हैं, तो यह सूचना डिवाइस को सूचना भेजता है।

चित्र 1- प्रदाता से उपकरण तक दूरस्थ सूचना पथ

चित्र: ../Art/token_trust.jpg

डिवाइस द्वारा अधिसूचना प्राप्त करने के बाद (और चित्र 1-7 में दिखाए गए अंतिम चरण के बाद), सिस्टम आपके ऐप को रिमोट नोटिफिकेशन फॉरवर्ड करता है।

Ref: Apple पुश अधिसूचना सेवा

अब, तकनीकी प्रवाह को समझने के लिए यहां देखें: iOS एप्लिकेशन पर Apple पुश अधिसूचना सेवा कैसे लागू करें?


7
Haha, आपने शाब्दिक रूप से संपूर्ण Apple डॉक्स प्रविष्टि को SO में चिपकाया है!
मैट मैक

@MattMc - हाँ, मैं SO के लिए नौसिखिया था, जब मैंने यह उत्तर पोस्ट किया था और उस समय मैंने APNS को एक लिंक पोस्ट किया था लेकिन एक लिंक को SO पर उत्तर के रूप में नहीं माना जाता है, इसलिए मैंने ऐसा किया .... :)
क्रुनाल

1
यह वास्तव में सच है, बस एक-लिंक जवाब से बहुत बेहतर है;)
मैट मैक

14

डिवाइस पुश नोटिफिकेशन के लिए सर्वर को पोलिंग नहीं रखता है।

इसे सरल रखने के लिए, विचार करें कि एक iPhone इंटरनेट से जुड़ा है। इंटरनेट से कनेक्ट होने पर iPhone Apple पुश नोटिफिकेशन सर्वर से कनेक्शन स्थापित करता है यह कनेक्शन खुला कनेक्शन है जिसका अर्थ है कि सर्वर से डेटा को सर्वर पर आने के समय डेटा को iPhone में फेंक दिया जा सकता है।

Apple पुश नोटिफिकेशन के लिए HTTP प्रोटोकॉल का उपयोग नहीं करता है लेकिन यदि आप HTTP प्रोटोकॉल को समझते हैं तो यह लगभग एक समान पद्धति है।

http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push


यदि वे http का उपयोग नहीं करते हैं तो क्या होगा?
होवीकैंप

2

इस लेख में पुश सूचनाओं का वास्तव में अच्छा वर्णन है ।

IOS में, एप्लिकेशन पृष्ठभूमि में बहुत कुछ नहीं कर सकते हैं। ऐप्स को केवल सीमित गतिविधियों को करने की अनुमति है ताकि बैटरी जीवन संरक्षित हो।

लेकिन क्या होगा अगर कुछ दिलचस्प होता है और आप उपयोगकर्ता को इस बारे में बताना चाहते हैं, भले ही वे वर्तमान में आपके ऐप का उपयोग न कर रहे हों?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.