5.7

अंग्रेज़ी में देखें

5.7 मोबाइल एप्लिकेशन विकास

अवलोकन और प्रेरणा

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

मोबाइल एक अलग इंजीनियरिंग वातावरण है, वेब या डेस्कटॉप का छोटा संस्करण नहीं। डिवाइस जेब में, बैटरी पर, और ऐसे कनेक्शन पर चलता है जो आते-जाते रहते हैं। स्क्रीन छोटी होती हैं। ऑपरेटिंग सिस्टम नियंत्रित करता है कि आपका ऐप क्या कर सकता है। दो प्रमुख प्लेटफ़ॉर्म मौजूद हैं (Apple का iOS और Google का Android), प्रत्येक की अपनी भाषाएँ, डिज़ाइन नियम, और स्टोर हैं। आप जब चाहें बस एक अपडेट शिप नहीं कर सकते, क्योंकि एक स्टोर पहले उसकी समीक्षा करता है, और उपयोगकर्ता तय करते हैं कि उसे कब इंस्टॉल करना है। यह अध्याय फ्रंटएंड इंजीनियरिंग (अध्याय 5.6), UX फ़ाउंडेशन (अध्याय 5.1), और एक्सेसिबिलिटी (अध्याय 5.3) पर आधारित है, और यह एप्लिकेशन सुरक्षा (अध्याय 4.2) और CI/CD तथा डिलीवरी (अध्याय 8.1) पर निर्भर करता है।

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

मुख्य सिद्धांत

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

सिफ़ारिशें

बिल्ड दृष्टिकोण सोच-समझकर चुनें

तीन व्यापक दृष्टिकोण हैं, और प्रत्येक अलग-अलग ज़रूरतों में फ़िट बैठता है।

नेटिव विकास का अर्थ है हर प्लेटफ़ॉर्म के लिए उसके अपने टूल का उपयोग करते हुए अलग-अलग लिखना: iOS के लिए Swift, Android के लिए Kotlin। आपको सबसे अच्छा प्रदर्शन, डिवाइस सुविधाओं तक सबसे पूर्ण पहुँच, और सबसे सच्चा प्लेटफ़ॉर्म एहसास मिलता है, दो कोडबेस बनाने और बनाए रखने की कीमत पर।

क्रॉस-प्लेटफ़ॉर्म फ़्रेमवर्क एक कोडबेस को दोनों प्लेटफ़ॉर्म को लक्षित करने देते हैं। React Native JavaScript का उपयोग करता है और वास्तविक नेटिव कंपोनेंट रेंडर करता है। Flutter Dart भाषा का उपयोग करता है और अपने स्वयं के विजेट खींचता है। ये दोहराए गए प्रयास को कम करते हैं और डिलीवरी को तेज़ कर सकते हैं, लेकिन ये फ़्रेमवर्क के स्वास्थ्य पर एक निर्भरता जोड़ते हैं और नवीनतम प्लेटफ़ॉर्म सुविधाओं से पीछे रह सकते हैं।

एक प्रोग्रेसिव वेब ऐप (PWA: एक वेबसाइट जिसे इंस्टॉल किया जा सकता है और जो ऑफ़लाइन काम कर सकती है) को किसी स्टोर की ज़रूरत नहीं है और यह तुरंत अपडेट होती है, लेकिन इसकी कुछ डिवाइस सुविधाओं तक सीमित पहुँच होती है और होम स्क्रीन पर कमज़ोर उपस्थिति होती है।

आवश्यक डिवाइस सुविधाओं, प्रदर्शन प्रोफ़ाइल, रखरखाव क्षितिज, आपके पास उपलब्ध कौशलों, और आपको चाहिए पहुँच के आधार पर चुनें। एक उच्च-प्रदर्शन उपभोक्ता ऐप नेटिव को उचित ठहरा सकता है। एक छोटी टीम वाला कंटेंट-और-फ़ॉर्म ऐप क्रॉस-प्लेटफ़ॉर्म या PWA में अच्छी तरह फ़िट हो सकता है।

प्लेटफ़ॉर्म डिज़ाइन दिशानिर्देशों का पालन करें

हर प्लेटफ़ॉर्म के प्रकाशित, विस्तृत परंपराएँ हैं। Apple Human Interface Guidelines प्रदान करता है, और Google Material Design प्रदान करता है। ये नेविगेशन, जेस्चर, टाइपोग्राफ़ी, स्पेसिंग, और सिस्टम व्यवहारों को कवर करते हैं। इनका पालन करना आपके ऐप को परिचित महसूस कराता है, जो उपयोगकर्ताओं द्वारा इसे सीखने में लगने वाले प्रयास को कम करता है। इनसे लड़ना एक ऐप को विदेशी और अजीब महसूस कराता है। एक क्रॉस-प्लेटफ़ॉर्म कोडबेस को फिर भी प्रति-प्लेटफ़ॉर्म परंपराओं का सम्मान करने की ज़रूरत है जहाँ वे अलग हैं, बजाय इसके कि एक प्लेटफ़ॉर्म का रूप-रंग दूसरे पर थोप दिया जाए।

मोबाइल की सीमाओं के लिए डिज़ाइन करें

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

वितरण, संस्करण, और अपडेट की योजना बनाएँ

प्रकाशन Apple App Store और Google Play के माध्यम से होता है, प्रत्येक के अपने समीक्षा प्रक्रम और नीतियाँ हैं जो किसी रिलीज़ में देरी कर सकती हैं या उसे अस्वीकार कर सकती हैं। अपने शेड्यूल में समीक्षा समय शामिल करें, और नीतियों को जल्दी पढ़ें। चूँकि उपयोगकर्ता तय करते हैं कि कब अपडेट करना है, आपके पास हमेशा एक साथ मैदान में कई संस्करण होंगे। अपने ऐप को पुराने क्लाइंट के साथ पिछड़े-संगत रखें, और अपने API को वर्ज़न करें (अध्याय 2.3) ताकि एक पुराना ऐप काम करता रहे। जब ज़रूरी हो तब अपडेट अनिवार्य करने का एक तरीका प्रदान करें, उदाहरण के लिए एक फ़ोर्स्ड-अपडेट प्रॉम्प्ट जब कोई संस्करण असुरक्षित या असमर्थित हो, और इसका उपयोग कम से कम करें। उद्यम आंतरिक ऐप को सार्वजनिक स्टोर के बजाय MDM या निजी चैनलों के माध्यम से भी वितरित कर सकते हैं।

पुश नोटिफ़िकेशन और डीप लिंक का सावधानी से उपयोग करें

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

ऐप और उसके डेटा को सुरक्षित करें

डिवाइस को अविश्वसनीय और संभवतः खोया हुआ मानें। संवेदनशील डेटा को प्लेटफ़ॉर्म के सुरक्षित स्टोरेज (iOS Keychain या Android Keystore) में संग्रहीत करें, कभी सादे फ़ाइलों में नहीं। संवेदनशील कार्यों को अनलॉक करने के लिए बायोमेट्रिक प्रमाणीकरण (फ़िंगरप्रिंट या चेहरा) प्रदान करें, जिसे एक पासकोड का समर्थन प्राप्त हो। उच्च-मूल्य कनेक्शन के लिए सर्टिफ़िकेट पिनिंग (यह जाँचना कि सर्वर एक अपेक्षित सर्टिफ़िकेट प्रस्तुत करता है) पर विचार करें, और उन सर्टिफ़िकेट को घुमाने (rotate) की योजना बनाएँ। आप डिवाइस पर जो संग्रहीत करते हैं उसे कम से कम रखें, सीक्रेट की रक्षा करें, और एप्लिकेशन सुरक्षा (अध्याय 4.2) में व्यापक मार्गदर्शन का पालन करें।

एक वास्तविक परीक्षण और डिलीवरी पाइपलाइन बनाएँ

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

एक्सेसिबिलिटी को एक आवश्यकता बनाएँ

हर प्लेटफ़ॉर्म की एक्सेसिबिलिटी सुविधाओं का समर्थन करें: स्क्रीन रीडर (iOS पर VoiceOver, Android पर TalkBack), डायनामिक टेक्स्ट आकार, पर्याप्त रंग कंट्रास्ट, और बड़े टच लक्ष्य। नियंत्रणों को लेबल करें ताकि सहायक तकनीक उन्हें वर्णित कर सके। केवल स्वचालित जाँचों से नहीं, बल्कि वास्तविक सहायक टूल के साथ परीक्षण करें। विशेष रूप से सरकार के लिए, एक्सेसिबिलिटी एक कानूनी अधिदेश है, और विवरण एक्सेसिबिलिटी (अध्याय 5.3) में हैं।

समझौते: फ़ायदे और नुकसान

दृष्टिकोणफ़ायदेनुकसान
नेटिव (Swift, Kotlin)सबसे अच्छा प्रदर्शन, पूर्ण डिवाइस पहुँच, सच्चा प्लेटफ़ॉर्म एहसासदो कोडबेस, अधिक लागत, अधिक स्टाफ़
React Nativeएक JavaScript कोडबेस, वास्तविक नेटिव कंपोनेंट, तेज़ पुनरावृत्तिफ़्रेमवर्क निर्भरता, ब्रिजिंग जटिलता, सुविधा में देरी
Flutterएक कोडबेस, सुसंगत UI, मज़बूत प्रदर्शनDart कौशल कम आम, बड़ा ऐप आकार, अपना विजेट मॉडल
प्रोग्रेसिव वेब ऐपकोई स्टोर नहीं, तुरंत अपडेट, एक वेब कोडबेससीमित डिवाइस सुविधाएँ, कमज़ोर उपस्थिति, प्लेटफ़ॉर्म सीमाएँ
फ़ोर्स्ड अपडेटअसुरक्षित पुराने संस्करणों को जल्दी हटाता हैअधिक उपयोग होने पर उपयोगकर्ताओं को परेशान करता है; पहुँच रोक सकता है
सर्टिफ़िकेट पिनिंगअवरोधन के विरुद्ध मज़बूत सुरक्षाऐप अपडेट के बिना सर्टिफ़िकेट घूमने पर टूट जाता है

बार-बार आने वाला समझौता पहुँच और डिलीवरी की गति बनाम गहराई और निष्ठा (fidelity) है। नेटिव सबसे समृद्ध, सबसे सच्चा अनुभव देता है लेकिन बनाने और बनाए रखने में सबसे अधिक लागत लेता है। क्रॉस-प्लेटफ़ॉर्म और PWA दृष्टिकोण प्रयास बचाते हैं और पहुँच को व्यापक बनाते हैं, प्लेटफ़ॉर्म एहसास या डिवाइस पहुँच में कुछ लागत पर। फ़ॉर्म और कंटेंट शिप करने वाली एक छोटी टीम के लिए, एक कोडबेस साझा करना अक्सर बुद्धिमानी है। एक मांग वाले उपभोक्ता ऐप के लिए, नेटिव गहराई कीमत के लायक हो सकती है। ऐप के पूरे जीवन को ध्यान में रखकर निर्णय लें, केवल लॉन्च को नहीं।

अपनी टीम के साथ चर्चा करने के लिए प्रश्न

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

  2. पुश नोटिफ़िकेशन भेजने के लिए हमारा मानक क्या है, और कौन तय करता है कि किसी उपयोगकर्ता को बाधित करना उचित है? पुश नोटिफ़िकेशन लोगों तक तब पहुँचती हैं जब ऐप बंद होता है, जो उन्हें शक्तिशाली और आसानी से दुरुपयोग किए जाने योग्य बनाता है, और उपयोगकर्ता उन उत्पादों की नोटिफ़िकेशन बंद कर देते हैं (या ऐप हटा देते हैं) जो अति करते हैं। इस पर सहमत हों कि वास्तविक मूल्य क्या माना जाए, उपयोगकर्ता आवृत्ति और चैनल को कैसे नियंत्रित करते हैं, और आप अनुमति के लिए बार-बार आग्रह करने के बजाय प्लेटफ़ॉर्म सहमति का सम्मान कैसे करते हैं। एक साझा मानक के बिना, हर टीम जिसे कोई मीट्रिक पूरा करना है, पुश का सहारा लेगी, और पूरा चैनल शोर में बदल जाएगा। पिछले महीने आपने भेजी नोटिफ़िकेशन लाएँ और पूछें कि उपयोगकर्ता किसके लिए आपका धन्यवाद करते। यदि अधिकांश प्रचारात्मक थीं, तो ऑप्ट-आउट दर आपके लिए यह करे इससे पहले नीति कड़ी करें।

  3. क्या हमारी मोबाइल डिलीवरी पाइपलाइन वास्तविक है, जो साइनिंग, एक डिवाइस फ़ार्म, और बीटा वितरण को कवर करती है, या रिलीज़ एक तनावपूर्ण मैनुअल अफरा-तफरी है? मोबाइल ऐसे ख़तरे जोड़ता है जो वेब में नहीं होते: स्टोर समीक्षा किसी रिलीज़ में देरी या उसे अस्वीकार कर सकती है, साइनिंग की और स्टोर क्रेडेंशियल को सुरक्षित रूप से संभालना होगा, और हार्डवेयर और सेंसर इतने अलग होते हैं कि एमुलेटर वास्तविक समस्याओं को छुपा देते हैं। CI/CD के माध्यम से बिल्ड, परीक्षण, साइनिंग, और स्टोर सबमिशन को स्वचालित करना, परीक्षकों को बीटा वितरण के साथ और आपके उपयोगकर्ता वास्तव में जो मॉडल रखते हैं उन्हें कवर करने वाला एक क्लाउड डिवाइस फ़ार्म, वह चीज़ है जो रिलीज़ को वीरता से नियमितता में बदल देती है। तय करें कि पाइपलाइन और साइनिंग की का स्वामी कौन है, और स्टोर समीक्षा समय को हर रिलीज़ योजना में कैसे शामिल किया जाता है। अपनी पिछली रिलीज़ की कहानी लाएँ और मैनुअल चरणों की गिनती करें। हर एक ऐसी जगह है जहाँ समयसीमा के दबाव में एक तनावपूर्ण रिलीज़ गड़बड़ हो सकती है।

  4. क्या हमने इस उत्पाद के पूरे जीवन के लिए नेटिव, क्रॉस-प्लेटफ़ॉर्म, या एक प्रोग्रेसिव वेब ऐप चुना है, या केवल लॉन्च के दिन के लिए? बिल्ड दृष्टिकोण वर्षों तक एक मोबाइल ऐप की लागत और क्षमता पर सबसे बड़ा उत्तोलक है, और तेज़ी से शिप करने के लिए किया गया चुनाव आपको फँसा सकता है: नेटिव दो कोडबेस और दो कौशल सेट की कीमत पर सबसे समृद्ध डिवाइस पहुँच और प्लेटफ़ॉर्म एहसास खरीदता है, जबकि क्रॉस-प्लेटफ़ॉर्म और PWA कोड साझा करते हैं लेकिन एक फ़्रेमवर्क निर्भरता जोड़ते हैं या कुछ डिवाइस सुविधाओं तक पहुँच खो देते हैं। एक बड़ी टीम के लिए, यह निर्णय भर्ती, रखरखाव बजट, और आप हर वार्षिक OS रिलीज़ को कितनी जल्दी अपना सकते हैं यह तय करता है, इसलिए यह एक स्पष्ट स्वामी का हकदार है, न कि जिसने पहला प्रोटोटाइप लिखा उसके द्वारा तय किया गया डिफ़ॉल्ट। आवश्यक डिवाइस सुविधाएँ, प्रदर्शन प्रोफ़ाइल, रखरखाव क्षितिज, और आप वास्तव में जो कौशल भर्ती कर सकते हैं वे लाएँ, और इस बारे में ईमानदार रहें कि हर विकल्प के तहत आप कौन-सी प्लेटफ़ॉर्म सुविधाएँ खो देंगे। उद्यम और सरकारी सेटिंग में, तौलें कि क्या ऐप एक दीर्घकालिक प्रतिबद्धता है जिसे स्टाफ़ बदलाव और एक दशक के प्लेटफ़ॉर्म परिवर्तन से बचना होगा, और निर्णय और उसका औचित्य दर्ज करें ताकि भविष्य की टीम को यह अनुमान न लगाना पड़े कि कोडबेस ऐसा क्यों दिखता है।

  5. हमारे वास्तविक उपयोगकर्ताओं को किस डिवाइस और OS-संस्करण समर्थन सीमा की ज़रूरत है, और क्या हम उस हार्डवेयर पर परीक्षण कर रहे हैं जो वे वास्तव में रखते हैं, न कि केवल अपनी मेज़ पर पड़े फ़ोन पर? फ़्रैग्मेंटेशन मोबाइल की सामान्य स्थिति है: उपयोगकर्ता स्क्रीन आकार, डिवाइस शक्ति, और OS संस्करणों की व्यापक विविधता में फैले होते हैं, और टीम के फ़्लैगशिप पर ट्यून किया गया ऐप आपके दर्शकों के अधिकांश के पास मौजूद साधारण हार्डवेयर पर सुस्त या टूटा हुआ शिप होगा। एक समर्थन सीमा तय करना पहुँच और प्रयास के बीच एक समझौता है, क्योंकि हर पुराना मॉडल और OS संस्करण जिसका आप समर्थन करने का वादा करते हैं, परीक्षण मैट्रिक्स और रखरखाव भार को बढ़ाता है, इसलिए यह सीमा अनुमान के बजाय वास्तविक उपयोग डेटा से आनी चाहिए। अपना डिवाइस और OS-संस्करण वितरण, एक क्लाउड डिवाइस फ़ार्म या लैब वर्तमान में जो मॉडल कवर करता है, और केवल सिमुलेटर पर नहीं बल्कि निम्न-स्तरीय हार्डवेयर पर आपने जो प्रदर्शन मापा है, वह लाएँ। सरकारी नागरिक ऐप के लिए यह लगभग गैर-परक्राम्य है, क्योंकि आपको एक्सेसिबिलिटी दायित्वों के तहत पुराने डिवाइस और धीमे कनेक्शन वाले लोगों सहित हर किसी की सेवा करनी होगी, और उद्यम बेड़ों के लिए आपको एक सामान्य नमूने के बजाय स्टाफ़ के पास मौजूद वास्तविक रग्ड हैंडसेट पर परीक्षण करना चाहिए।

  6. डिवाइस पर कौन-सा संवेदनशील डेटा रहता है, और क्या हर टुकड़ा एक खोए, चोरी हुए, या किसी और के हाथों में पड़े फ़ोन के विरुद्ध सुरक्षित है? एक मोबाइल डिवाइस जेब में यात्रा करता है और खो जाता या चोरी हो जाता है, इसलिए किसी सादी फ़ाइल में संग्रहीत कोई भी डेटा या सीक्रेट एक गुम फ़ोन जितनी दूर एक्सपोज़र से है, और हर उपयोगकर्ता के साथ प्रभाव-क्षेत्र बढ़ता है। विचार एक-दूसरे के विरुद्ध खिंचते हैं: डिवाइस पर डेटा कैश करना ही ऑफ़लाइन-फ़र्स्ट को काम करने देता है और ऐप को तेज़ रखता है, फिर भी हर कैश किया गया आइटम एक देनदारी है जिसे प्लेटफ़ॉर्म के सुरक्षित स्टोरेज (iOS Keychain या Android Keystore) में रहना चाहिए, कम से कम रखा जाना चाहिए, और आदर्श रूप से बायोमेट्रिक्स या पासकोड के पीछे बंद होना चाहिए। ऐप स्थानीय रूप से वास्तव में क्या बनाए रखता है इसकी एक इन्वेंट्री लाएँ, हर आइटम कहाँ संग्रहीत है, उसे क्या अनलॉक करता है, और क्या उच्च-मूल्य कनेक्शन एक व्यावहारिक रोटेशन योजना के साथ सर्टिफ़िकेट पिनिंग का उपयोग करते हैं। उद्यम सेटिंग में, इसे मोबाइल डिवाइस मैनेजमेंट नीति और रिमोट वाइप से जोड़ें, और सरकारी सेटिंग में डिवाइस-पर व्यक्तिगत डेटा को एक गोपनीयता और कानूनी एक्सपोज़र मानें जिसे ऑडिट के तहत उचित ठहराया, दस्तावेज़ीकृत किया, और बचाव किया जाना चाहिए।

क्षेत्र लेंस

स्टार्टअप। एक छोटी टीम और कम रनवे के साथ, आप शायद ही दो नेटिव कोडबेस या दो कौशल सेट वहन कर सकते हैं, इसलिए एक क्रॉस-प्लेटफ़ॉर्म फ़्रेमवर्क या यहाँ तक कि एक PWA जो एक कोडबेस से दोनों स्टोर तक पहुँचती है, आमतौर पर जीतता है। जिस एक मुख्य कार्य की परवाह है उसके लिए ऑफ़लाइन-फ़र्स्ट शिप करें, किसी भी टोकन को सादी फ़ाइल के बजाय सुरक्षित स्टोरेज में रखें, और हर रिलीज़ में स्टोर समीक्षा समय शामिल करें ताकि कोई अस्वीकृति लॉन्च की तारीख न बिगाड़े। जब तक वास्तविक उपयोग उन्हें उचित न ठहराए, फ़ोर्स्ड अपडेट, सर्टिफ़िकेट पिनिंग, और डिवाइस फ़ार्म छोड़ दें।

लघु व्यवसाय। बिना किसी समर्पित मोबाइल विशेषज्ञ और तंग बजट के साथ, बनाने के बजाय ख़रीदने की ओर भारी झुकाव रखें: एक नो-कोड ऐप बिल्डर, आपके पॉइंट-ऑफ़-सेल या बुकिंग विक्रेता से एक व्हाइट-लेबल ऐप, या आपकी मौजूदा वेबसाइट से एक अच्छी तरह बनाई गई PWA अक्सर एक कस्टम ऐप को हरा देती है जिसे आप बनाए नहीं रख सकते। यदि आप एक ऐप बनवाते हैं, तो साइनिंग की और स्टोर खाते स्वयं रखें ताकि कोई ठेकेदार आपकी उपस्थिति को बंधक न बना सके, और अनुबंध में एक्सेसिबिलिटी और सुरक्षित ऑन-डिवाइस स्टोरेज पर ज़ोर दें। दायरे को उन एक या दो कार्यों तक सीमित रखें जो ग्राहक वास्तव में फ़ोन पर करते हैं।

उद्यम। बड़े पैमाने पर, ऐप कई टीमों में एक दीर्घकालिक प्रतिबद्धता है, इसलिए हर उत्पाद को इन्हें फिर से आविष्कार करने देने के बजाय बिल्ड दृष्टिकोण, सुरक्षित-स्टोरेज पैटर्न, CI/CD पाइपलाइन, और API-वर्ज़निंग नीति को मानकीकृत करें। आंतरिक कार्यबल ऐप आमतौर पर इंस्टॉलेशन, कॉन्फ़िगरेशन, रिमोट वाइप, और नीति के लिए मोबाइल डिवाइस मैनेजमेंट से होकर बहते हैं, जबकि ग्राहक ऐप को वास्तविक उपयोग को कवर करने वाले एक डिवाइस फ़ार्म और ऑडिट की गई एक्सेसिबिलिटी और सुरक्षा की ज़रूरत होती है। साइनिंग की, स्टोर क्रेडेंशियल, और रिलीज़ समय को केंद्रीय रूप से नियंत्रित करें ताकि एक ब्रेकिंग बैकएंड परिवर्तन कभी पुराने क्लाइंट की लंबी पूँछ को न फँसाए।

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

उदाहरण

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

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

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

व्यावसायिक तर्क: प्रेरणाएँ, ROI, और TCO

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

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

नेतृत्व से यह मामला बनाने के लिए, ऐप को ठोस परिणामों से जोड़ें: कार्य पूर्णता, प्रतिधारण, कार्यबल उत्पादकता, या घटी हुई सपोर्ट लागत। पूरे दृष्टिकोण निर्णय की कीमत ऐप के पूरे जीवन में लगाएँ, केवल पहली रिलीज़ में नहीं, और उन जोखिमों (सुरक्षा, एक्सेसिबिलिटी कानून, स्टोर अस्वीकृति) का नाम लें जिन्हें एक गंभीर मोबाइल प्रथा घटाती है।

विपरीत प्रतिमान और नुकसान

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

परिपक्वता मॉडल

स्तर 1: प्रारंभ (Initiate)। मोबाइल तदर्थ और प्रतिक्रियात्मक है। ऐप एक वेबसाइट की तरह बनाया गया है, टीम के अपने फ़ोन पर परीक्षित है, और अक्सर ऑफ़लाइन टूट जाता है। सुरक्षित स्टोरेज, एक्सेसिबिलिटी, या स्टोर समीक्षा समयसीमाओं पर बहुत कम विचार होता है। रिलीज़ एक तनावपूर्ण मैनुअल अफरा-तफरी है, और बिल्ड दृष्टिकोण या साइनिंग की का कोई स्वामी नहीं है।

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

स्तर 3: मानकीकरण (Standardize)। अच्छी प्रथा दस्तावेज़ीकृत और संगठन-व्यापी लागू है। ऑफ़लाइन-फ़र्स्ट डिफ़ॉल्ट है, एक दस्तावेज़ीकृत डिवाइस समर्थन सीमा एक डिवाइस लैब या क्लाउड फ़ार्म पर परीक्षित है, और प्लेटफ़ॉर्म डिज़ाइन दिशानिर्देशों और एक्सेसिबिलिटी का पालन किया जाता है और वास्तविक सहायक टूल के साथ सत्यापित किया जाता है। सुरक्षित स्टोरेज, बायोमेट्रिक्स, और API वर्ज़निंग मानक हैं, CI/CD बिल्ड, परीक्षण, साइनिंग, और बीटा वितरण को स्वचालित करता है, और स्टोर समीक्षा समय हर रिलीज़ में योजनाबद्ध है।

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

स्तर 5: समन्वय (Orchestrate)। मोबाइल पूरे संगठन में निरंतर सुधरता और एकीकृत होता है, और डिवाइस परिदृश्य बदलने पर अनुकूलित होता है। सर्टिफ़िकेट रोटेशन, फ़ोर्स्ड-अपडेट पथ, और रोलबैक नियमित हैं, प्लेटफ़ॉर्म के हर साल रिलीज़ होने पर समर्थन सीमा और बिल्ड दृष्टिकोण को साक्ष्य पर फिर से तय किया जाता है, और उपयोगकर्ताओं और डिवाइस की पूरी विविधता को प्रथम-श्रेणी माना जाता है। मोबाइल योजना सुरक्षा, एक्सेसिबिलिटी, API, और डिलीवरी प्रथा के साथ जुड़ी है, ताकि एक OS परिवर्तन, एक नया डिवाइस स्तर, या एक नीति बदलाव आपात स्थिति के बजाय नियमित कार्य के रूप में समाहित हो जाए।

चर्चा के लिए विचार

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

मुख्य निष्कर्ष

  • ऐप के पूरे जीवन के लिए बिल्ड दृष्टिकोण (नेटिव, क्रॉस-प्लेटफ़ॉर्म, या PWA) चुनें।
  • प्लेटफ़ॉर्म डिज़ाइन दिशानिर्देशों का पालन करें ताकि ऐप परिचित महसूस हो और उपयोगकर्ता प्रयास कम हो।
  • मोबाइल की सीमाओं के लिए डिज़ाइन करें: ऑफ़लाइन-फ़र्स्ट, मितव्ययी बैटरी और डेटा, फ़्रैग्मेंटेशन, छोटी स्क्रीन।
  • आप रिलीज़ का समय नियंत्रित नहीं करते; स्टोर समीक्षा, वर्ज़निंग, और फ़ोर्स्ड अपडेट के लिए योजना बनाएँ।
  • पुश नोटिफ़िकेशन और डीप लिंक का उपयोग संयम और सहमति के साथ करें।
  • सुरक्षित स्टोरेज, बायोमेट्रिक्स, और जहाँ उचित हो सर्टिफ़िकेट पिनिंग के साथ ऑन-डिवाइस डेटा को सुरक्षित करें।
  • वास्तविक डिवाइस पर परीक्षण करें और CI/CD के माध्यम से मोबाइल पाइपलाइन को स्वचालित करें।
  • एक्सेसिबिलिटी को एक आवश्यकता बनाएँ, जो सरकार के लिए एक कानूनी अधिदेश है।

संदर्भ और आगे पढ़ने के लिए

  • Apple, Human Interface Guidelines
  • Google, Material Design guidelines
  • Apple, App Store Review Guidelines
  • Google, Google Play developer policies and Android developer documentation
  • OWASP, Mobile Application Security Verification Standard (MASVS) and Mobile Security Testing Guide
  • React Native project documentation
  • Flutter project documentation
  • Google, web.dev guidance on progressive web apps
  • U.S. Section 508 and WCAG (Web Content Accessibility Guidelines) references for mobile accessibility
  • NIST, Guidelines on mobile device security and management