2016-11-30 14 views
10

मैं पुश नोटिफिकेशन के साथ एक iOS चैट विकासशील रहा हूं और मुझे Firebase क्लाउड संदेश का उपयोग, लेकिन मैं इस समस्या है:आईओएस पुश अधिसूचना - तेज

एप्लिकेशन मार दिया जाता है (नहीं पृष्ठभूमि में) नहीं है एक सामग्री (चैट संदेश) प्राप्त करने के लिए अधिसूचना से कॉलबैक प्राप्त करने का तरीका?

संदेश प्राप्त करने और आंतरिक डेटाबेस में सहेजने का एकमात्र तरीका मेरे सर्वर पर जांच है जब कोई अपठित संदेश है तो मैं ऐप शुरू करता हूं?

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

अद्यतन 2016/02/12:

परीक्षण का एक बहुत बाद, मैं सेब सहायता से संपर्क किया है और वे इस ईमेल के साथ मेरे लिए प्रतिक्रिया व्यक्त की है:

मैं पृष्ठभूमि पुश अधिसूचनाओं के बारे में आपके प्रश्न का उत्तर दे रहा हूं।

इस विषय पर पहली बार डब्ल्यूडब्ल्यूडीसी 2013 सत्र 204 डब्ल्यूडब्ल्यूडीसी 2013: मल्टीटास्किंग के साथ नया क्या है। मूक पुश नोटिफिकेशन (जिनके पेलोड में केवल सामग्री-उपलब्ध कुंजी और कोई अलर्ट, बैज, या ध्वनि कुंजी शामिल नहीं है) आईओएस केवल निर्धारित करता है कि यह ऐसा करने के लिए ऊर्जा-कुशल है।

उच्च प्राथमिकता (प्राथमिकता 10) पर भेजे गए बैज को चेतावनी, ध्वनि, या बैज जैसी उपयोगकर्ता-दृश्य कुंजी के साथ पुश सूचनाएं हमेशा प्रदर्शित होती हैं। हालांकि, अगर अधिसूचना में सामग्री-उपलब्ध कुंजी भी शामिल है, अधिसूचना को थ्रॉटल किया जा सकता है और इस प्रकार उपयोगकर्ता को पृष्ठभूमि में ऐप पर नहीं भेजा जाएगा जब तक कि उपयोगकर्ता अधिसूचना न करे।

सूचनाएं कम प्राथमिकता (प्राथमिकता 5) में भेजा से रोक दिए जाते हैं, परवाह किए बिना पेलोड के। कम प्राथमिकता पर मूक पुश नोटिफिकेशन हमेशा भेजा जाना चाहिए।

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

थ्रॉटल का उद्देश्य भविष्यवाणी करना है कि उपयोगकर्ता ऐप लॉन्च करेगा और इस प्रकार पृष्ठभूमि गतिविधि को में ऊर्जा-कुशल तरीके से ऐप की सामग्री को अपडेट करने की अनुमति देगा। यह से पृष्ठभूमि ट्रैफ़िक के साथ उपयोगकर्ता की बैटरी या सेलुलर डेटा का अधिकतर उपभोग करने वाले ऐप्स को रोकने में भी कार्य करता है।

एक बार उपकरण-विस्तृत बैटरी या डेटा बजट समाप्त हो चुकी है, कोई अधिक पृष्ठभूमि पुश नोटिफिकेशन वितरित किया जाएगा जब तक बजट रीसेट कर रहे हैं। बजट हर 24 घंटों में रीसेट होते हैं, और यह अनुसूची उपयोगकर्ता या डेवलपर कार्रवाई द्वारा बदला नहीं जा सकता है।

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

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

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

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

पृष्ठभूमि पुश अधिसूचनाओं का परीक्षण करने के लिए, इन चरणों का पालन करें।

  1. अपने डिवाइस को अपने मैक से अटैच करें।
  2. एक्सकोड से अपना ऐप शुरू करें।
  3. लॉन्च होने पर, स्टॉप बटन (ऊपरी बाईं ओर वर्ग आइकन) पर क्लिक करके अपने ऐप को एक्सकोड के भीतर से रोकें। 1 और अपने अनुप्रयोग हर बार सूचना प्राप्त होगा:
  4. Xcode में, कर डीबग -> प्रक्रिया को संलग्न -> संलग्न
  5. साथ पुश अधिसूचना भेजें सामग्री उपलब्ध -> [प्रतीक्षा करने के लिए प्रक्रिया का नाम भरें]।

आप यह पुष्टि करने के लिए कि आपके ऐप पृष्ठभूमि में चल रहा है, आप प्रक्रियाओं में प्रक्रिया सूची का उपयोग कर सकते हैं।

आप वाई-फाई और डिवाइस पावर में प्लग इन डिवाइस का उपयोग करके भी परीक्षण कर सकते हैं।

आप चुप पुश नोटिफिकेशन भेज रहे हैं, सुनिश्चित करें कि आप APN के प्रदाता API या बाइनरी प्रदाता एपीआई का उपयोग कर रहे हैं ताकि आप 5. को नोटिफिकेशन प्राथमिकता निर्धारित कर सकते हैं हो सकता है

(डिफ़ॉल्ट प्राथमिकता से 10 है)

यदि आपको लगता है कि थ्रॉटलिंग ठीक तरह से काम नहीं कर रही है, तो पर रिपोर्ट दर्ज करें। का ब्योरा कैसे थ्रॉटलिंग काम सार्वजनिक एपीआई नहीं है, लेकिन आईओएस इंजीनियरिंग इन बग रिपोर्टों को देखता है और यह निर्धारित कर सकता है कि अधिसूचना अपेक्षित रूप से थ्रॉटल हो रही है या नहीं।

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

iOS 7, स्थान और वीओआईपी (आईओएस 9.3 पर और बाद में) को छोड़कर सभी पृष्ठभूमि श्रेणियों के साथ शुरू लगातार व्यवहार करते हैं जब कोई उपयोगकर्ता मल्टीटास्किंग प्रदर्शन से किसी एप्लिकेशन को बल इस्तीफा। एक ऐप तब तक स्वचालित रूप से लॉन्च नहीं होगा जब तक उपयोगकर्ता इसे लॉन्च करने का विकल्प नहीं चुनता। यह उपयोगकर्ता के इरादे को एप चलाने का सम्मान नहीं करता है, यदि कोई ऐप लॉन्च पर दुर्व्यवहार और क्रैश हो रहा है तो यह एक बहुत ही महत्वपूर्ण वसूली तकनीक हो सकती है।

आप एक ऐप्लिकेशन है जो पृष्ठभूमि सूचनाएँ प्राप्त करने के लिए कॉन्फ़िगर किया गया है बंद करते हैं, यह उन्हें प्राप्त नहीं होगा जब तक यह फिर से खोल दिया गया है।

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

तो संदेश जोड़ने का एकमात्र तरीका सर्वर से संपर्क है और अपठित संदेश प्राप्त करें।

एंड्रॉइड में एक ही समस्या है लेकिन शायद आप इसे पृष्ठभूमि सेवा के साथ हल कर सकते हैं (और इसे मारने पर इसे पुनरारंभ करें)।

अब मुझे चुनना है कि ऐप्पल पुश नोटिफिकेशन या एफसीएम पुश नोटिफिकेशन का उपयोग करें या नहीं। विश्वसनीयता एक ही है? (क्योंकि, उदाहरण के लिए, टेलीग्राम एंड्रॉयड में दोनों एक मालिकाना धक्का सेवा और FCM का उपयोग करता है, क्योंकि वे कहते हैं कि FCM बहुत विश्वसनीय नहीं है)

iOS पर

उत्तर

2

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

+0

ठीक है, लेकिन अब मेरे पास एक सवाल है। यदि कोई पुश अधिसूचना आंतरिक डेटाबेस में कोई संदेश सहेजने का सही तरीका नहीं है, क्योंकि किसी मामले में मैंने वर्णन किया है (जब ऐप मारा गया था) कॉलबैक नहीं कहा जाता है, व्हाट्सएप/टेलीग्राम/.. । कर देता है? क्योंकि, उदाहरण के लिए, अगर मैं व्हाट्सएप (जब इसे मारा गया था) को एक संदेश भेजता है, तो अधिसूचना सही ढंग से दिखायी जाती है, जैसा कि मेरे ऐप में है, लेकिन यदि तब (ओपन व्हाट्सएप के बिना) मैंने अपने फोन पर ऑफलाइन मोड सेट किया है और मैं संदेश को व्हाट्सएप खोलता हूं सही ढंग से दिखाया गया है और निश्चित रूप से फोन सर्वर से अनुरोध नहीं करता है। धन्यवाद – diegocom

+0

क्या आपने अपने ऐप की जानकारी प्लिस्ट के पृष्ठभूमि ऐप को रीफ्रेश करने की कोशिश की है? –

+0

@ZonilyJame हां, मेरी जानकारी plist में मैं पृष्ठभूमि लाने और दूरस्थ अधिसूचना भी सेट – diegocom

संबंधित मुद्दे