1. शुरुआती जानकारी
पिछली बार अपडेट किया गया: 16-11-2022
Firebase और Jetpack Compose की मदद से Android ऐप्लिकेशन बनाना
इस कोडलैब में, आपको Make It So नाम का एक Android ऐप्लिकेशन बनाना होगा. इस ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई), पूरी तरह से Jetpack Compose से बनाया गया है. यह नेटिव यूआई बनाने के लिए, Android का आधुनिक टूलकिट है. यह आसान है और इसमें .xml फ़ाइलें लिखने और उन्हें गतिविधियों, फ़्रैगमेंट या व्यू से जोड़ने के मुकाबले कम कोड की ज़रूरत होती है.
Firebase और Jetpack Compose के साथ मिलकर काम करने का तरीका समझने के लिए, सबसे पहले Android के आधुनिक आर्किटेक्चर को समझना ज़रूरी है. अच्छे आर्किटेक्चर की मदद से, सिस्टम को आसानी से समझा जा सकता है, उसे डेवलप किया जा सकता है, और उसे मैनेज किया जा सकता है. ऐसा इसलिए, क्योंकि इससे यह साफ़ तौर पर पता चलता है कि कॉम्पोनेंट को कैसे व्यवस्थित किया गया है और वे एक-दूसरे के साथ कैसे इंटरैक्ट करते हैं. Android के लिए सुझाए गए आर्किटेक्चर को मॉडल - व्यू - ViewModel कहा जाता है. मॉडल, उस लेयर को दिखाता है जो ऐप्लिकेशन में डेटा को ऐक्सेस करता है. व्यू, यूज़र इंटरफ़ेस (यूआई) लेयर है और उसे कारोबार के लॉजिक के बारे में कुछ नहीं पता होना चाहिए. ViewModel में कारोबार का लॉजिक लागू होता है. इसके लिए, कभी-कभी ViewModel को Model लेयर को कॉल करना पड़ता है.
हमारा सुझाव है कि यह लेख पढ़ें. इससे आपको यह समझने में मदद मिलेगी कि Jetpack Compose की मदद से बनाए गए Android ऐप्लिकेशन में, मॉडल - व्यू - ViewModel को कैसे लागू किया जाता है. इससे कोडबेस को समझना आसान हो जाएगा और अगले चरणों को पूरा करना आसान हो जाएगा.
आपको क्या बनाना है
Make It So, टास्क की सूची बनाने वाला एक आसान ऐप्लिकेशन है. इसकी मदद से, उपयोगकर्ता टास्क जोड़ सकता है और उनमें बदलाव कर सकता है. साथ ही, टास्क के लिए फ़्लैग, प्राथमिकताएं, और समयसीमा जोड़ सकता है. इसके अलावा, टास्क को 'पूरा हो गया' के तौर पर मार्क भी किया जा सकता है. यहां दी गई इमेज में, इस ऐप्लिकेशन के दो मुख्य पेज दिखाए गए हैं: टास्क बनाने वाला पेज और बनाए गए टास्क की सूची वाला मुख्य पेज.
आपको कुछ ऐसी सुविधाएं जोड़नी होंगी जो इस ऐप्लिकेशन में मौजूद नहीं हैं:
- ईमेल और पासवर्ड की मदद से उपयोगकर्ताओं की पुष्टि करना
- Firestore कलेक्शन में लिसनर जोड़ना और यूज़र इंटरफ़ेस (यूआई) को बदलावों के हिसाब से काम करने के लिए बनाना
- ऐप्लिकेशन में किसी खास कोड की परफ़ॉर्मेंस को मॉनिटर करने के लिए, कस्टम ट्रेस जोड़ना
- रिमोट कॉन्फ़िगरेशन का इस्तेमाल करके, सुविधा टॉगल बनाएं और उसे लॉन्च करने के लिए, धीरे-धीरे रिलीज़ करने की सुविधा का इस्तेमाल करें
आपको इनके बारे में जानकारी मिलेगी
- आधुनिक Android ऐप्लिकेशन में Firebase से पुष्टि करने की सुविधा, परफ़ॉर्मेंस मॉनिटरिंग, रिमोट कॉन्फ़िगरेशन, और Cloud Firestore का इस्तेमाल करने का तरीका
- Firebase API को MVVM आर्किटेक्चर में फ़िट करने का तरीका
- Compose के यूज़र इंटरफ़ेस (यूआई) में, Firebase API की मदद से किए गए बदलावों को दिखाने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
- Android Studio Flamingo+
- एपीआई 21 या उसके बाद के वर्शन वाला Android एमुलेटर
- Kotlin प्रोग्रामिंग लैंग्वेज के बारे में जानकारी
2. सैंपल ऐप्लिकेशन पाना और Firebase सेट अप करना
सैंपल ऐप्लिकेशन का कोड पाना
कमांड लाइन से GitHub के डेटा स्टोर करने की जगह को क्लोन करें:
git clone https://github.com/FirebaseExtended/make-it-so-android.git
Firebase प्रोजेक्ट बनाना
सबसे पहले, आपको Firebase कंसोल पर जाना होगा. इसके बाद, "+ प्रोजेक्ट जोड़ें" बटन पर क्लिक करके Firebase प्रोजेक्ट बनाएं. यहां इसकी इमेज दी गई है:
प्रोजेक्ट बनाने की प्रोसेस पूरी करने के लिए, स्क्रीन पर दिया गया तरीका अपनाएं.
अपने Firebase प्रोजेक्ट में Android ऐप्लिकेशन जोड़ना
अपने Firebase प्रोजेक्ट में, Android, iOS, वेब, Flutter, और Unity के लिए अलग-अलग ऐप्लिकेशन रजिस्टर किए जा सकते हैं.
यहां दिए गए Android विकल्प को चुनें:
इसके बाद, यह तरीका अपनाएं:
- पैकेज के नाम के तौर पर
com.example.makeitso
डालें. इसके अलावा, कोई दूसरा नाम भी डाला जा सकता है. इस कोडलैब के लिए, आपको डीबग साइनिंग सर्टिफ़िकेट जोड़ने की ज़रूरत नहीं है. - अपने ऐप्लिकेशन को रजिस्टर करने और Firebase कॉन्फ़िगरेशन फ़ाइल को ऐक्सेस करने के लिए, आगे बढ़ें पर क्लिक करें.
- अपनी कॉन्फ़िगरेशन फ़ाइल डाउनलोड करने के लिए, google-services.json डाउनलोड करें पर क्लिक करें और उसे
make-it-so-android/app
डायरेक्ट्री में सेव करें. - आगे बढ़ें पर क्लिक करें. सैंपल प्रोजेक्ट में
build.gradle
फ़ाइल में Firebase SDK टूल पहले से ही शामिल हैं. इसलिए, अगले चरणों पर जाने के लिए, आगे बढ़ें पर क्लिक करें. - इसके बाद, कंसोल पर जारी रखें पर क्लिक करें.
Make it So ऐप्लिकेशन को सही तरीके से काम करने के लिए, आपको कोड पर जाने से पहले Console में दो काम करने होंगे: पुष्टि करने की सेवा देने वाली कंपनियों को चालू करना और Firestore डेटाबेस बनाना.
पुष्टि करने की सुविधा सेट अप करना
सबसे पहले, पुष्टि करने की सुविधा चालू करें, ताकि उपयोगकर्ता ऐप्लिकेशन में लॉग इन कर सकें:
- बिल्ड मेन्यू में जाकर, पुष्टि करें चुनें. इसके बाद, शुरू करें पर क्लिक करें.
- साइन इन करने का तरीका कार्ड में जाकर, ईमेल/पासवर्ड चुनें और उसे चालू करें.
- इसके बाद, नया प्रोवाइडर जोड़ें पर क्लिक करें. इसके बाद, अनाम को चुनें और चालू करें.
Cloud Firestore सेट अप करना
इसके बाद, Firestore सेट अप करें. साइन इन किए हुए उपयोगकर्ता के टास्क सेव करने के लिए, Firestore का इस्तेमाल किया जाएगा. हर उपयोगकर्ता को डेटाबेस के कलेक्शन में अपना दस्तावेज़ मिलेगा.
- Firebase कंसोल के बाएं पैनल में, बिल्ड करें को बड़ा करें. इसके बाद, Firestore डेटाबेस चुनें.
- डेटाबेस बनाएं पर क्लिक करें.
- डेटाबेस आईडी को
(default)
पर सेट रहने दें. - अपने डेटाबेस के लिए कोई जगह चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
असल ऐप्लिकेशन के लिए, आपको ऐसी जगह चुननी होगी जो आपके उपयोगकर्ताओं के आस-पास हो. - टेस्ट मोड में शुरू करें पर क्लिक करें. सुरक्षा नियमों के बारे में डिसक्लेमर पढ़ें.
इस सेक्शन के अगले चरणों में, आपको अपने डेटा को सुरक्षित रखने के लिए सुरक्षा नियम जोड़ने होंगे. अपने डेटाबेस के लिए सुरक्षा नियम जोड़े बिना, ऐप्लिकेशन को सार्वजनिक तौर पर न डिस्ट्रिब्यूट या एक्सपोज़ करें. - बनाएं पर क्लिक करें.
आइए, Firestore डेटाबेस के लिए मज़बूत सुरक्षा नियम बनाते हैं.
- Firestore डैशबोर्ड खोलें और नियम टैब पर जाएं.
- सुरक्षा नियमों को इस तरह अपडेट करें:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow create: if request.auth != null;
allow read, update, delete: if request.auth != null && resource.data.userId == request.auth.uid;
}
}
}
इन नियमों का मतलब है कि ऐप्लिकेशन में साइन इन करने वाला कोई भी उपयोगकर्ता, किसी भी कलेक्शन में अपने लिए दस्तावेज़ बना सकता है. इसके बाद, दस्तावेज़ बनाने वाला उपयोगकर्ता ही उसे देख सकता है, अपडेट कर सकता है या मिटा सकता है.
ऐप्लिकेशन चलाना
अब ऐप्लिकेशन चलाया जा सकता है! Android Studio में make-it-so-android/start
फ़ोल्डर खोलें और ऐप्लिकेशन चलाएं. ऐसा, Android एमुलेटर या किसी असली Android डिवाइस का इस्तेमाल करके किया जा सकता है.
3. Firebase से पुष्टि करना
आपको कौनसी सुविधा जोड़नी है?
Make It So के सैंपल ऐप्लिकेशन की मौजूदा स्थिति में, उपयोगकर्ता बिना साइन-इन किए ऐप्लिकेशन का इस्तेमाल शुरू कर सकता है. ऐसा करने के लिए, यह पहचान छिपाकर पुष्टि करने की सुविधा का इस्तेमाल करता है. हालांकि, गुमनाम खातों से उपयोगकर्ता, दूसरे डिवाइसों पर या आने वाले समय में होने वाले सेशन में अपना डेटा ऐक्सेस नहीं कर सकता. पहचान छिपाकर पुष्टि करने की सुविधा, उपयोगकर्ताओं को तुरंत ऑनबोर्ड करने के लिए मददगार होती है. हालांकि, आपको उपयोगकर्ताओं को हमेशा साइन इन करने के लिए, किसी दूसरे तरीके का विकल्प देना चाहिए. इस बात को ध्यान में रखते हुए, इस कोडलैब में आपको Make It So ऐप्लिकेशन में ईमेल और पासवर्ड की पुष्टि करने की सुविधा जोड़नी होगी.
कोडिंग का समय आ गया है!
उपयोगकर्ता के ईमेल और पासवर्ड डालकर खाता बनाने के बाद, आपको Firebase Authentication API से ईमेल क्रेडेंशियल मांगना होगा. इसके बाद, नए क्रेडेंशियल को बिना नाम वाले खाते से लिंक करना होगा. Android Studio में AccountServiceImpl.kt
फ़ाइल खोलें और linkAccount
फ़ंक्शन को अपडेट करें, ताकि यह इस तरह दिखे:
model/service/impl/AccountServiceImpl.kt
override suspend fun linkAccount(email: String, password: String) {
val credential = EmailAuthProvider.getCredential(email, password)
auth.currentUser!!.linkWithCredential(credential).await()
}
अब SignUpViewModel.kt
खोलें और onSignUpClick
फ़ंक्शन के launchCatching
ब्लॉक में, सेवा linkAccount
फ़ंक्शन को कॉल करें:
screens/sign_up/SignUpViewModel.kt
launchCatching {
accountService.linkAccount(email, password)
openAndPopUp(SETTINGS_SCREEN, SIGN_UP_SCREEN)
}
सबसे पहले, यह पुष्टि करने की कोशिश करता है कि आपके पास सही क्रेडेंशियल हैं या नहीं. अगर कॉल सही तरीके से होता है, तो यह अगली स्क्रीन (SettingsScreen
) पर चला जाता है. इन कॉल को launchCatching
ब्लॉक में चलाया जा रहा है. अगर पहली लाइन में कोई गड़बड़ी होती है, तो अपवाद को पकड़कर उसे मैनेज कर दिया जाएगा. साथ ही, दूसरी लाइन पर पहुंचा ही नहीं जाएगा.
SettingsScreen
को फिर से खोलने के बाद, आपको यह पक्का करना होगा कि साइन इन करें और खाता बनाएं विकल्प न दिखें. इसकी वजह यह है कि उपयोगकर्ता की पुष्टि पहले ही हो चुकी है. इसके लिए, SettingsViewModel
को मौजूदा उपयोगकर्ता की स्थिति (AccountService.kt
में उपलब्ध) को सुनने दें, ताकि यह पता लगाया जा सके कि खाता अनाम है या नहीं. ऐसा करने के लिए, SettingsViewModel.kt
में uiState
को इस तरह अपडेट करें:
screens/settings/SettingsViewModel.kt
val uiState = accountService.currentUser.map {
SettingsUiState(it.isAnonymous)
}
आखिर में, आपको SettingsViewModel
से उत्सर्जित होने वाले स्टेटस इकट्ठा करने के लिए, SettingsScreen.kt
में uiState
को अपडेट करना होगा:
screens/settings/SettingsScreen.kt
val uiState by viewModel.uiState.collectAsState(
initial = SettingsUiState(false)
)
अब जब भी उपयोगकर्ता बदलेगा, तो SettingsScreen
अपने-आप फिर से बन जाएगा, ताकि उपयोगकर्ता की पुष्टि की नई स्थिति के हिसाब से विकल्प दिखाए जा सकें.
जांच करने का समय आ गया है!
Make it So चलाएं और स्क्रीन पर सबसे ऊपर दाएं कोने में मौजूद गियर आइकॉन पर क्लिक करके सेटिंग पर जाएं. वहां, खाता बनाएं विकल्प पर क्लिक करें:
अपना खाता बनाने के लिए, मान्य ईमेल पता और मज़बूत पासवर्ड डालें. ऐसा करने पर, आपको सेटिंग पेज पर रीडायरेक्ट कर दिया जाएगा. यहां आपको दो नए विकल्प दिखेंगे: साइन आउट करना और अपना खाता मिटाना. Firebase कंसोल पर, पुष्टि करने वाले डैशबोर्ड में बनाया गया नया खाता देखने के लिए, 'उपयोगकर्ता' टैब पर क्लिक करें.
4. Cloud Firestore
आपको कौनसी सुविधा जोड़नी है?
Cloud Firestore के लिए, आपको Firestore कलेक्शन में एक लिसनर जोड़ना होगा. यह Make it So में दिखाए गए टास्क के दस्तावेज़ों को सेव करता है. इस लिसनर को जोड़ने के बाद, आपको इस कलेक्शन में किया गया हर अपडेट मिलेगा.
कोडिंग का समय आ गया है!
StorageServiceImpl.kt
में उपलब्ध Flow
को इस तरह अपडेट करें:
model/service/impl/StorageServiceImpl.kt
override val tasks: Flow<List<Task>>
get() =
auth.currentUser.flatMapLatest { user ->
firestore.collection(TASK_COLLECTION).whereEqualTo(USER_ID_FIELD, user.id).dataObjects()
}
यह कोड, user.id
के आधार पर टास्क कलेक्शन में एक लिसनर जोड़ रहा है. हर टास्क को tasks
नाम के कलेक्शन में मौजूद दस्तावेज़ से दिखाया जाता है. साथ ही, हर टास्क में userId
नाम का एक फ़ील्ड होता है. कृपया ध्यान दें कि अगर currentUser
का स्टेटस बदलता है, तो एक नया Flow
उत्सर्जित किया जाएगा. उदाहरण के लिए, साइन आउट करने पर.
अब आपको TasksViewModel.kt
में मौजूद Flow
को सेवा में मौजूद Flow
के तौर पर दिखाना होगा:
screens/tasks/TasksViewModel.kt
val tasks = storageService.tasks
आखिरी बात यह है कि TasksScreens.kt
में composable function
को इस फ़्लो के बारे में पता होना चाहिए और उसे स्टेटस के तौर पर इकट्ठा करना चाहिए. TasksScreens.kt
, यूज़र इंटरफ़ेस (यूआई) को दिखाता है. स्टेटस में हर बार बदलाव होने पर, कॉम्पोज़ेबल फ़ंक्शन अपने-आप फिर से कॉम्पोज़ हो जाएगा और उपयोगकर्ता को सबसे हाल की स्थिति दिखाएगा. इसे TasksScreen composable function
में जोड़ें:
screens/tasks/TasksScreen.kt
val tasks = viewModel
.tasks
.collectAsStateWithLifecycle(emptyList())
जब कॉम्पोज़ेबल फ़ंक्शन के पास इन स्थितियों का ऐक्सेस हो, तो LazyColumn
को इस तरह अपडेट किया जा सकता है. LazyColumn
वह स्ट्रक्चर है जिसका इस्तेमाल स्क्रीन पर सूची दिखाने के लिए किया जाता है:
screens/tasks/TasksScreen.kt
LazyColumn {
items(tasks.value, key = { it.id }) { taskItem ->
TaskItem( [...] )
}
}
जांच करने का समय आ गया है!
यह जांचने के लिए कि यह सुविधा काम कर रही है या नहीं, ऐप्लिकेशन का इस्तेमाल करके कोई नया टास्क जोड़ें. इसके लिए, स्क्रीन पर सबसे नीचे दाएं कोने में मौजूद 'जोड़ें' बटन पर क्लिक करें. टास्क बनाने के बाद, वह Firestore Console में Firestore कलेक्शन में दिखेगा. अगर आपने एक ही खाते से किसी दूसरे डिवाइस पर Make it So में लॉग इन किया है, तो आपको अपने 'क्या-क्या करें' आइटम में बदलाव करने का विकल्प मिलेगा. साथ ही, उन आइटम को सभी डिवाइसों पर रीयल-टाइम में अपडेट होते हुए देखा जा सकेगा.
5. परफ़ॉर्मेंस को मॉनिटर करना
आपको कौनसी सुविधा जोड़नी है?
परफ़ॉर्मेंस पर ध्यान देना बहुत ज़रूरी है. ऐसा इसलिए, क्योंकि अगर ऐप्लिकेशन की परफ़ॉर्मेंस अच्छी नहीं है और किसी आसान काम को पूरा करने में उपयोगकर्ताओं को ज़्यादा समय लगता है, तो वे आपके ऐप्लिकेशन का इस्तेमाल करना बंद कर सकते हैं. इसलिए, कभी-कभी आपके ऐप्लिकेशन में उपयोगकर्ता के किसी खास सफ़र के बारे में कुछ मेट्रिक इकट्ठा करना फ़ायदेमंद होता है. इस काम में आपकी मदद करने के लिए, Firebase परफ़ॉर्मेंस मॉनिटरिंग की सुविधा कस्टम ट्रेस उपलब्ध कराती है. कस्टम ट्रेस जोड़ने और Make it So में कोड के अलग-अलग हिस्सों की परफ़ॉर्मेंस को मेज़र करने के लिए, यहां दिया गया तरीका अपनाएं.
कोडिंग का समय आ गया है!
Performance.kt
फ़ाइल खोलने पर, आपको ट्रैक नाम का एक इनलाइन फ़ंक्शन दिखेगा. यह फ़ंक्शन, कस्टम ट्रेस बनाने के लिए परफ़ॉर्मेंस मॉनिटरिंग एपीआई को कॉल करता है. साथ ही, ट्रेस के नाम को पैरामीटर के तौर पर पास करता है. आपको दिखने वाला दूसरा पैरामीटर, कोड का वह ब्लॉक होता है जिसे आपको मॉनिटर करना है. हर ट्रेस के लिए इकट्ठा की गई डिफ़ॉल्ट मेट्रिक, पूरी तरह से चलने में लगने वाला समय होता है:
model/service/Performance.kt
inline fun <T> trace(name: String, block: Trace.() -> T): T = Trace.create(name).trace(block)
आपके पास यह चुनने का विकल्प होता है कि कोडबेस के किन हिस्सों को मेज़र करना ज़रूरी है. साथ ही, उनमें कस्टम ट्रेस जोड़े जा सकते हैं. यहां linkAccount
फ़ंक्शन में कस्टम ट्रेस जोड़ने का उदाहरण दिया गया है. इस फ़ंक्शन को आपने इस कोडलैब में पहले (AccountServiceImpl.kt
में) देखा था:
model/service/impl/AccountServiceImpl.kt
override suspend fun linkAccount(email: String, password: String): Unit =
trace(LINK_ACCOUNT_TRACE) {
val credential = EmailAuthProvider.getCredential(email, password)
auth.currentUser!!.linkWithCredential(credential).await()
}
अब आपकी बारी है! Make it So ऐप्लिकेशन में कुछ कस्टम ट्रेस जोड़ें. इसके बाद, अगले सेक्शन पर जाएं और देखें कि यह उम्मीद के मुताबिक काम कर रहा है या नहीं.
जांच करने का समय आ गया है!
कस्टम ट्रेस जोड़ने के बाद, ऐप्लिकेशन चलाएं और पक्का करें कि आपको जिन सुविधाओं को मेज़र करना है उनका कुछ समय के लिए इस्तेमाल किया जाए. इसके बाद, Firebase कंसोल में जाकर परफ़ॉर्मेंस डैशबोर्ड पर जाएं. स्क्रीन पर सबसे नीचे, आपको तीन टैब दिखेंगे: नेटवर्क अनुरोध, कस्टम ट्रेस, और स्क्रीन रेंडरिंग.
कस्टम ट्रेस टैब में जाकर, देखें कि कोडबेस में जो ट्रेस जोड़े गए हैं वे वहां दिख रहे हैं या नहीं. साथ ही, यह भी देखें कि इन कोड को लागू करने में आम तौर पर कितना समय लगता है.
6. Remote Config
आपको कौनसी सुविधा जोड़नी है?
रिमोट कॉन्फ़िगरेशन के इस्तेमाल के कई उदाहरण हैं. जैसे, अपने ऐप्लिकेशन के लुक को रिमोट तौर पर बदलना और अलग-अलग उपयोगकर्ता सेगमेंट के लिए, ऐप्लिकेशन के काम करने के तरीके को कॉन्फ़िगर करना. इस कोडलैब में, आपको रिमोट कॉन्फ़िगरेशन का इस्तेमाल करके एक सुविधा टॉगल बनाना है. यह टॉगल, Make it So ऐप्लिकेशन पर टास्क में बदलाव करने की नई सुविधा को दिखाएगा या छिपाएगा.
कोडिंग का समय आ गया है!
सबसे पहले, आपको Firebase कंसोल में कॉन्फ़िगरेशन बनाना होगा. ऐसा करने के लिए, आपको रिमोट कॉन्फ़िगरेशन डैशबोर्ड पर जाना होगा और पैरामीटर जोड़ें बटन पर क्लिक करना होगा. नीचे दी गई इमेज के हिसाब से फ़ील्ड भरें:
सभी फ़ील्ड भरने के बाद, सेव करें बटन और फिर पब्लिश करें पर क्लिक करें. पैरामीटर बन जाने और आपके कोडबेस में उपलब्ध होने के बाद, आपको वह कोड जोड़ना होगा जो आपके ऐप्लिकेशन में नई वैल्यू फ़ेच करेगा. ConfigurationServiceImpl.kt
फ़ाइल खोलें और इन दो फ़ंक्शन को लागू करने का तरीका अपडेट करें:
model/service/impl/ConfigurationServiceImpl.kt
override suspend fun fetchConfiguration(): Boolean {
return remoteConfig.fetchAndActivate().await()
}
override val isShowTaskEditButtonConfig: Boolean
get() = remoteConfig[SHOW_TASK_EDIT_BUTTON_KEY].asBoolean()
पहला फ़ंक्शन, सर्वर से वैल्यू फ़ेच करता है. यह फ़ंक्शन, ऐप्लिकेशन के शुरू होने के साथ ही SplashViewModel.kt
में कॉल किया जाता है. यह पक्का करने का सबसे अच्छा तरीका है कि शुरुआत से ही सभी स्क्रीन पर अप-टू-डेट वैल्यू उपलब्ध हों. अगर उपयोगकर्ता कुछ कर रहा है और उस दौरान ऐप्लिकेशन के यूज़र इंटरफ़ेस या उसके काम करने के तरीके में बदलाव किया जाता है, तो यह उपयोगकर्ता अनुभव के लिहाज़ से अच्छा नहीं होता!
दूसरा फ़ंक्शन, उस पैरामीटर के लिए पब्लिश की गई बूलियन वैल्यू दिखा रहा है जिसे आपने अभी-अभी Console में बनाया है. आपको TasksViewModel.kt
फ़ंक्शन में यह जानकारी वापस लानी होगी. इसके लिए, loadTaskOptions
फ़ंक्शन में यह जानकारी जोड़ें:
screens/tasks/TasksViewModel.kt
fun loadTaskOptions() {
val hasEditOption = configurationService.isShowTaskEditButtonConfig
options.value = TaskActionOption.getOptions(hasEditOption)
}
पहली लाइन में मौजूद वैल्यू को वापस पाया जा रहा है और इसका इस्तेमाल करके, दूसरी लाइन में टास्क आइटम के लिए मेन्यू के विकल्प लोड किए जा रहे हैं. अगर वैल्यू false
है, तो इसका मतलब है कि मेन्यू में बदलाव करने का विकल्प नहीं होगा. अब आपके पास विकल्पों की सूची है. आपको यूज़र इंटरफ़ेस (यूआई) को सही तरीके से दिखाना होगा. Jetpack Compose की मदद से ऐप्लिकेशन बनाते समय, आपको वह composable function
ढूंढना होगा जिसमें यह बताया गया हो कि TasksScreen
का यूज़र इंटरफ़ेस (यूआई) कैसा दिखना चाहिए. इसलिए, TasksScreen.kt
फ़ाइल खोलें और LazyColum
को अपडेट करें, ताकि यह TasksViewModel.kt
में उपलब्ध विकल्पों पर ले जाए:
screens/tasks/TasksScreen.kt
val options by viewModel.options
LazyColumn {
items(tasks.value, key = { it.id }) { taskItem ->
TaskItem(
options = options,
[...]
)
}
}
TaskItem
एक और composable function
है, जो बताता है कि किसी एक टास्क का यूज़र इंटरफ़ेस (यूआई) कैसा दिखना चाहिए. साथ ही, हर टास्क में विकल्पों वाला एक मेन्यू होता है. यह मेन्यू तब दिखता है, जब उपयोगकर्ता टास्क के आखिर में मौजूद तीन बिंदु वाले आइकॉन पर क्लिक करता है.
जांच करने का समय आ गया है!
अब ऐप्लिकेशन चलाया जा सकता है! देखें कि Firebase कंसोल का इस्तेमाल करके पब्लिश की गई वैल्यू, ऐप्लिकेशन के काम करने के तरीके से मेल खाती है या नहीं:
- अगर यह
false
है, तो आपको तीन बिंदु वाले आइकॉन पर क्लिक करने पर, सिर्फ़ दो विकल्प दिखेंगे; - अगर यह
true
है, तो आपको तीन बिंदु वाले आइकॉन पर क्लिक करने पर तीन विकल्प दिखेंगे;
कंसोल में वैल्यू को कुछ बार बदलकर, ऐप्लिकेशन को रीस्टार्ट करें. रिमोट कॉन्फ़िगरेशन का इस्तेमाल करके, अपने ऐप्लिकेशन में नई सुविधाएं लॉन्च करना कितना आसान है!
7. बधाई
बधाई हो, आपने Firebase और Jetpack Compose की मदद से Android ऐप्लिकेशन बना लिया है!
आपने यूज़र इंटरफ़ेस (यूआई) के लिए, पूरी तरह से Jetpack Compose से बनाए गए Android ऐप्लिकेशन में Firebase से पुष्टि करने की सुविधा, परफ़ॉर्मेंस मॉनिटरिंग, रिमोट कॉन्फ़िगरेशन, और Cloud Firestore जोड़ा है. साथ ही, इसे सुझाए गए MVVM आर्किटेक्चर में फ़िट किया है!
इसके बारे में और पढ़ें
- Firebase और Compose का इस्तेमाल करके Android ऐप्लिकेशन बनाना
- Jetpack Compose ऐप्लिकेशन में Firebase Authentication जोड़ना
- Jetpack Compose ऐप्लिकेशन में Cloud Firestore जोड़ना
- Firebase और Compose का इस्तेमाल करके बनाए गए Android ऐप्लिकेशन में कोरुटिन और फ़्लो जोड़ना
- Jetpack Compose ऐप्लिकेशन में Firebase की परफ़ॉर्मेंस मॉनिटरिंग सुविधा जोड़ना
- Jetpack Compose ऐप्लिकेशन में Firebase रिमोट कॉन्फ़िगरेशन जोड़ना