केस स्टडी
आपके ऐप के कुछ नोटिफिकेशन किसी तक क्यों नहीं पहुँचते
एक सुबह की समरी जो कभी नहीं पहुँची, और एक ग्राहक जिसने कुछ भी नहीं सुना। हमारे ही ऐप में दो कमियाँ, दोनों की वजह एक ऐसा मैसेज जिसके पहुँचने की कोई जगह नहीं थी, और हमने क्या बदला।
मुख्य बातें
- भेजा गया मैसेज और पहुँचा मैसेज एक बात नहीं है; सिर्फ यह न देखें कि वह निकला, बल्कि यह भी देखें कि वह पहुँचा कहाँ।
- Apple और Google 4 KB से बड़ा नोटिफिकेशन पूरा रिफ़्यूज़ कर देते हैं, इसलिए बड़ा मैसेज आपके लिए चुपचाप छोटा नहीं किया जाता।
- हर नोटिफिकेशन के लिए उन लोगों का कोई विकल्प रास्ता होना चाहिए जिन्होंने ऐप इंस्टॉल नहीं किया और कभी लिखा नहीं।
- हफ्ते के एक दिन दोहराने वाली गड़बड़ उस दिन जो कुछ अलग है, उसी की ओर इशारा करती है।
- अगर आप अरबी या किसी दूसरी गैर-लैटिन लिपि में लिखते हैं, तो नोटिफिकेशन का साइज़ अक्षरों में नहीं, बाइट्स में गिनें।
ऐप के नोटिफिकेशन न पहुँचना देख पाना सबसे मुश्किल समस्याओं में से एक है, क्योंकि जो मैसेज कभी पहुँचा ही नहीं, वह बिल्कुल शांत सुबह जैसा दिखता है। जिस मैसेज के भेजे जाने की किसी को खबर ही न हो, उसकी शिकायत कोई नहीं करता। हमारे ही ऐप में एक ही दिन ऐसी दो कमियाँ मिलीं, और दोनों का ढाँचा एक ही था: एक ऐसा मैसेज जिसके पहुँचने की कोई जगह नहीं थी।
जो मैसेज गायब हो जाता है, वह शांत दिन जैसा दिखता है
जो नोटिफिकेशन कभी पहुँचता ही नहीं, वह उस दिन में कोई निशान नहीं छोड़ता जिसके लिए वह था। किसी टीम के लिए, सुबह की समरी न आना मतलब दिन की शुरुआत उस नज़रिए के बिना करना जिस पर किसी को भरोसा था। किसी ग्राहक के लिए इससे भी बुरा: एक रिक्वेस्ट उनके जवाब का इंतज़ार करती रहती है जबकि उन्हें लगता है कि कुछ हो ही नहीं रहा, और बिज़नेस धीमा दिखता है जबकि है नहीं। दोनों ही मामलों में सिस्टम ने वही किया जो उससे कहा गया था। उसने भेजा।
हमारे इंजीनियरों को क्या मिला
हमारा अपना ऐप हमारी टीम को हर सुबह उनके फोन पर एक छोटी समरी भेजता है, और एक सुबह वह किसी के भी फोन पर नहीं पहुँची। इंजीनियर ने देखा कि उस दिन की समरी में क्या अलग था। उसमें हफ्ते का एक अतिरिक्त हिस्सा भी था, इसलिए वह बाकी दिनों से लंबी थी। उस मैसेज के लिए Apple की नोटिफिकेशन सेवा का जवाब साफ था: मैसेज बहुत बड़ा था।
Apple और Google दोनों 4 KB तक का नोटिफिकेशन स्वीकार करते हैं, जो बाइट्स में गिना जाता है, और इससे बड़ा कुछ भी पूरा रिफ़्यूज़ कर देते हैं। मैसेज काटा नहीं जाता, छोटा नहीं किया जाता, आधा नहीं भेजा जाता: वह भेजा ही नहीं जाता। बाकी दिनों में समरी छोटी होती थी और उसमें आ जाती थी, इसीलिए यह कमी हफ्ते के सिर्फ एक दिन दिखी।
दूसरी कमी ज़्यादा चुपचाप थी। जो ग्राहक हमें कभी कहीं लिखा ही नहीं था और जिसने ऐप इंस्टॉल नहीं किया था, उसके लिए एक रिक्वेस्ट दर्ज हो सकती थी, उससे एक कन्फर्मेशन माँगा जा सकता था, और उसे कुछ भी सुनाई नहीं देता। वह अपडेट वेब पोर्टल पर एक लिस्ट में दिखता था, जिसे खोलने की उनके पास कोई वजह नहीं थी। किसी रिक्वेस्ट को उन नियमों के ज़रिए देखने पर जो तय करते हैं कि मैसेज कहाँ जाएगा, बात समझ आई: डिफ़ॉल्ट रूप से मैसेज उसी चैनल पर जाता है जहाँ ग्राहक ने आखिरी बार हमें लिखा था, और ईमेल सिर्फ उसी के लिए पुश की जगह लेता है जिसके पास ऐप नहीं है। जिस ग्राहक के पास न ऐप था और न कहीं कोई बातचीत, उसका कोई आखिरी चैनल ही नहीं था, इसलिए भेजने की कोई जगह नहीं थी।
आप जैसे बिज़नेस के साथ ऐसा क्यों होता है
एक वजह यह है कि नोटिफिकेशन पूरे भेजे जाते हैं, चाहे वे कितने भी लंबे निकलें, और फोन की सेवाएँ मना करने से पहले पूछती नहींं। लिमिट से लंबा पुश नोटिफिकेशन पूरा रिफ़्यूज़ हो जाता है, और उसका अकेला निशान किसी सेवा के जवाब में एक लाइन हो सकती है जिसे कोई पढ़ता नहीं: नोटिफिकेशन डिलीवर नहीं हुआ, कोई ऐसी एरर नहीं जो किसी को दिखे। दूसरी वजह यह है कि ग्राहक का चैनल चुनने वाला नियम आम तौर पर मान लेता है कि लौटने के लिए कोई आखिरी चैनल है, जो हर उस व्यक्ति के लिए सच है जिसने कभी लिखा है और नए ग्राहक के लिए गलत है। और पुश नोटिफिकेशन का साइज़ अक्षरों में नहीं, बाइट्स में गिना जाता है, इसलिए अरबी और दूसरी गैर-लैटिन लिपियाँ अंग्रेज़ी से जल्दी उस लिमिट तक पहुँच जाती हैं, और स्क्रीन पर छोटा दिखने वाला मैसेज शायद छोटा हो ही न हो।
हफ्ते के एक खास दिन होने वाली गड़बड़ को बदकिस्मती नहीं, एक सुराग मानना चाहिए। उस दिन कुछ अलग होता है, और यहाँ वह अतिरिक्त हिस्सा था।
हमने क्या बदला
अब हर नोटिफिकेशन जाने से पहले लिमिट में फिट किया जाता है, इसलिए साइज़ का सवाल Apple या Google के देखने से पहले ही तय हो जाता है। अगर मैसेज बहुत लंबा है, तो बॉडी किसी शब्द पर छोटी की जाती है और अंत में ellipsis आता है; टाइटल तभी पीछे हटता है जब सिर्फ बॉडी से जगह न बने। साइज़ बाइट्स में उसी तरह गिना जाता है जैसे वे दोनों सेवाएँ गिनती हैं, इसलिए अरबी और दूसरी गैर-लैटिन लिपियाँ सही मापी जाती हैं और कभी किसी अक्षर के बीच से नहीं काटी जातीं। लॉक स्क्रीन पर वैसे भी नोटिफिकेशन की कुछ ही लाइनें दिखती हैं, और ईमेल तथा ऐप के अंदर का मैसेज उसका हर शब्द बनाए रखते हैं।
जिस ग्राहक के पास ऐप के नोटिफिकेशन मिलने ही नहीं हैं, उसके लिए उस चैट के लिए सोचा गया मैसेज, जो कभी शुरू ही नहीं हुई, अब ईमेल से जाता है। ऐसा तब तक होता है जब तक उनके पास वह चैट न हो, फोन पर ऐप न हो, उस तरह के मैसेज के लिए ईमेल बंद न किया हो, या वह मैसेज ईमेल से पहले से न मिल रहा हो। इससे वह मामला पूरा होता है जहाँ ग्राहक को कन्फर्मेशन ईमेल कभी नहीं मिला क्योंकि कोई ईमेल उन्हें संबोधित ही नहीं था।
अब स्थिति क्या है
दोनों बदलाव हमारे प्लेटफॉर्म पर लागू हैं, और वे उसी दिन गए जिस दिन दोनों कमियाँ मिलीं। लंबी हफ्तेवार समरी फिर फोन पर पहुँचती है: लॉक स्क्रीन पर छोटी, ऐप में और ईमेल में पूरी। जिस ग्राहक ने अभी हमें लिखा नहीं है या ऐप इंस्टॉल नहीं किया है, उसे अब ईमेल से पता चलता है जब उसके लिए कोई रिक्वेस्ट दर्ज होती है या कोई कन्फर्मेशन उसका इंतज़ार कर रहा होता है। यह एक ऐसा रास्ता है जो वहाँ बना जहाँ कोई नहीं था, कोई ऐसा आंकड़ा नहीं जिसकी ओर हम इशारा कर सकें।
आप खुद क्या जाँच सकते हैं
- अपने ऐप का सबसे लंबा नोटिफिकेशन खुद को भेजें और देखें कि वह पहुँचता है या नहीं। अगर छोटा टेस्ट मैसेज पहुँचता है और लंबा नहीं, तो साइज़ पर गौर करें।
- जो आपके ऐप का ध्यान रखता है, उससे पूछें कि लिमिट से बड़े नोटिफिकेशन का क्या होता है: क्या वह छोटा किया जाता है, या बिना किसी को बताए छोड़ दिया जाता है?
- सोचें कि जिस ग्राहक ने कभी ऐप इंस्टॉल नहीं किया और कभी लिखा नहीं, उसे किसी अपडेट का पता कैसे चलेगा। अगर जवाब पोर्टल पर एक लिस्ट है, तो कोई रास्ता नहीं है।
- पता करें कि क्या कोई नाकाम मैसेज कहीं कोई रिकॉर्ड छोड़ता है, और क्या उसे कोई पढ़ता है।
- ध्यान दें कि क्या कोई गड़बड़ किसी खास दिन या किसी खास तरह के मैसेज के बाद दोहराती है। पैटर्न अक्सर वजह बता देता है।
आगे क्या करें
हर उस तरीके की सूची बनाएँ जिससे आपका ऐप किसी व्यक्ति तक पहुँच सकता है, फिर उसकी सूची बनाएँ कि जब सामान्य तरीका मौजूद न हो तो क्या होता है। वह दूसरी सूची अक्सर छोटी होती है, और वहीं मैसेज चुपचाप गायब होते हैं। यह पक्का करना कि हर मैसेज के पहुँचने की कोई जगह हो, ऐसा काम है जो हमारे इंजीनियर क्लाइंट्स के लिए और अपने ही प्रोडक्ट्स पर करते हैं।
लोग जो पूछते हैं
मेरे ऐप का नोटिफिकेशन भेजे जाने के बाद भी क्यों नहीं पहुँचा?
भेजा गया का मतलब सिर्फ यह है कि मैसेज आपके सिस्टम से निकल गया। iPhone के लिए Apple की सेवा और Android के लिए Google की सेवा उसे फिर भी रिफ़्यूज़ कर सकती हैं, और वह रिफ़्यूज़ल अक्सर ऐसी जगह दिखती ही नहीं जहाँ बिज़नेस ओनर देखते हैं। आम वजहें हैं साइज़ लिमिट से बड़ा मैसेज, जो पूरा रिफ़्यूज़ हो जाता है, और ऐसा पाने वाला जिसके लिए मिलने का कोई रास्ता तय ही नहीं है।
Apple या Google के मना करने से पहले पुश नोटिफिकेशन कितना लंबा हो सकता है?
दोनों सेवाएँ 4 KB तक का नोटिफिकेशन स्वीकार करती हैं, जो बाइट्स में गिना जाता है, और इससे बड़ा कुछ भी काटने के बजाय एक ही बार में रिफ़्यूज़ कर देती हैं। टाइटल, बॉडी और कोई अतिरिक्त डेटा मिलाकर गिनने पर 4 KB सुनने से छोटा लगता है। अगर आप अरबी या किसी दूसरी गैर-लैटिन लिपि में लिखते हैं, तो याद रखें कि वही शब्द अंग्रेज़ी से ज़्यादा बाइट्स लेते हैं।
जिस ग्राहक ने मेरा ऐप इंस्टॉल नहीं किया, उस तक मैं कैसे पहुँचूँ?
ईमेल सामान्य रास्ता है, और यह उस व्यक्ति के लिए तय होना चाहिए, न कि पिछली बार संपर्क में आने से मान लिया जाए। इसे उस व्यक्ति का भी ध्यान रखना चाहिए जिसने उस तरह के मैसेज के लिए ईमेल बंद किया है, या जिसे वह पहले से उसी तरह मिल रहा है। वरना आप पोर्टल पर एक लिस्ट पर भेज रहे हैं जिसे खोलने की ग्राहक के पास कोई वजह नहीं है।
क्या नाकाम नोटिफिकेशन कहीं एरर के रूप में दिखता है?
कभी-कभी नोटिफिकेशन सेवा का जवाब वजह बता देता है, जैसा हमारे मामले में हुआ, लेकिन फोन पर कुछ नहीं दिखता और जिसे मैसेज के बारे में पता ही न हो, वह शिकायत नहीं करता। इसीलिए अपने ऐप का सबसे लंबा मैसेज टेस्ट करना फायदेमंद है, सिर्फ छोटे नमूनों के बजाय। बाहर से देखने पर शांत दिन और छूटा हुआ मैसेज एक जैसे दिखते हैं।
क्या नोटिफिकेशन में अरबी टेक्स्ट साइज़ लिमिट तक जल्दी पहुँचता है?
हाँ। लिमिट अक्षरों में नहीं, बाइट्स में गिनी जाती है, और गैर-लैटिन अक्षर आम तौर पर लैटिन अक्षरों से ज़्यादा बाइट्स लेते हैं। इसलिए जो मैसेज अंग्रेज़ी में आराम से आ जाता है, वह अरबी में लिमिट से बड़ा हो सकता है। साइज़ जाँचने वाली कोई भी चीज़ बाइट्स उसी तरह गिने जैसे फोन की सेवाएँ गिनती हैं, वरना वह ऐसे मैसेज पास कर देगी जो फिर रिफ़्यूज़ हो जाते हैं।