Firebase App Distribution iOS और Android SDK टूल की मदद से, ऐप्लिकेशन के नए वर्शन इंस्टॉल करने के लिए उपलब्ध होने पर, टेस्टर को इन-ऐप्लिकेशन सूचनाएं दिखाई जा सकती हैं. हालांकि, इनका इस्तेमाल करना ज़रूरी नहीं है. इस गाइड में, टेस्टर के लिए नए बिल्ड की सूचनाएं बनाने और उन्हें पसंद के मुताबिक बनाने के लिए, App Distribution iOS और Android SDK टूल का इस्तेमाल करने का तरीका बताया गया है.
शुरू करने से पहले
अगर आपने पहले से ही ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.
पहला चरण: App Distribution टेस्टर एपीआई को चालू करना
Google Cloud कंसोल में अपना प्रोजेक्ट चुनें.
Firebase ऐप्लिकेशन टेस्टर एपीआई में जाकर, चालू करें पर क्लिक करें.
दूसरा चरण: अपने ऐप्लिकेशन में App Distribution जोड़ना
App Distribution Android SDK में दो लाइब्रेरी होती हैं:
firebase-appdistribution-api
- सिर्फ़ एपीआई वाली लाइब्रेरी, जिसे सभी बिल्ड वैरिएंट में शामिल किया जा सकता है.firebase-appdistribution
- SDK टूल को पूरी तरह से लागू करना (ज़रूरी नहीं).
सिर्फ़ एपीआई लाइब्रेरी की मदद से, आपके कोड में एसडीके टूल को कॉल किया जा सकता है. अगर SDK टूल पूरी तरह से लागू नहीं है, तो कॉल पर इसका कोई असर नहीं होगा.
अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर <project>/<app-module>/build.gradle.kts
या
<project>/<app-module>/build.gradle
) में, App Distribution Android SDK टूल के लिए डिपेंडेंसी का एलान करें. अपने Play बिल्ड में, SDK टूल के लागू होने की पूरी सुविधा को अपने-आप अपडेट होने से रोकने के लिए, सभी बिल्ड वैरिएंट में सिर्फ़ एपीआई लाइब्रेरी डिपेंडेंसी जोड़ें.
SDK टूल को सिर्फ़ उन वैरिएंट में जोड़ें जिन्हें खास तौर पर रिलीज़ से पहले टेस्ट करने के लिए बनाया गया है.
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta14")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta14")
}
क्या आपको Kotlin के लिए कोई लाइब्रेरी मॉड्यूल चाहिए? अक्टूबर 2023 में रिलीज़ होने वाले वर्शन से, Kotlin और Java, दोनों डेवलपर मुख्य लाइब्रेरी मॉड्यूल का इस्तेमाल कर सकते हैं. ज़्यादा जानकारी के लिए, इस पहल के बारे में अक्सर पूछे जाने वाले सवाल देखें.
तीसरा चरण: ऐप्लिकेशन में सूचनाएं पाने की सुविधा कॉन्फ़िगर करना
App Distribution Android SDK टूल, टेस्टर के लिए इन-ऐप्लिकेशन बिल्ड सूचनाएं सेट अप करने के ये तरीके उपलब्ध कराता है:
- सूचना का बुनियादी कॉन्फ़िगरेशन, जो टेस्टर को दिखाने के लिए, पहले से बने ऐप्लिकेशन अपडेट और साइन-इन डायलॉग के साथ आता है.
- सूचना का बेहतर कॉन्फ़िगरेशन, जिसकी मदद से अपने यूज़र इंटरफ़ेस को पसंद के मुताबिक बनाया जा सकता है.
अगर App Distribution Android SDK टूल का इस्तेमाल पहली बार किया जा रहा है, तो हमारा सुझाव है कि आप बेसिक कॉन्फ़िगरेशन का इस्तेमाल करें.
बुनियादी कॉन्फ़िगरेशन
updateIfNewReleaseAvailable
का इस्तेमाल करके, उन टेस्टर को सूचनाएं चालू करने के लिए पहले से तैयार डायलॉग बॉक्स दिखाएं जिन्होंने अब तक सूचनाएं चालू नहीं की हैं. इसके बाद, देखें कि नया बिल्ड उपलब्ध है या नहीं. कॉल किए जाने पर, यह तरीका इस क्रम में काम करता है:
यह जांच करता है कि टेस्टर ने सूचनाएं चालू की हैं या नहीं. अगर टेस्टर ने अब तक सूचनाएं चालू नहीं की हैं, तो यह तरीका टेस्टर को अपने Google खाते से App Distribution में साइन इन करने के लिए कहता है.
टेस्टर के लिए, नए वर्शन उपलब्ध होने पर उन्हें इंस्टॉल करने की सुविधा.
पहले से तैयार की गई चेतावनी दिखाता है, ताकि टेस्टर को अपडेट करने के लिए कहा जा सके.
अगर नया बिल्ड Android ऐप्लिकेशन बंडल (एएबी) है, तो टेस्टर को अपडेट की प्रोसेस पूरी करने के लिए, Google Play पर रीडायरेक्ट किया जाता है.
अगर नया बिल्ड, Android ऐप्लिकेशन पैकेज (APK) है, तो SDK टूल, नया बिल्ड बैकग्राउंड में डाउनलोड करता है. साथ ही, डाउनलोड पूरा होने पर टेस्टर को इंस्टॉल करने के लिए कहता है. SDK टूल,
NotificationManager
का इस्तेमाल करके उपयोगकर्ता को डाउनलोड की प्रोग्रेस की सूचनाएं भेजता है.updateIfNewReleaseAvailable
टास्क मेंonProgressUpdate
हैंडलर अटैच करके, अपनी पसंद का प्रोग्रेस इंडिकेटर भी जोड़ा जा सकता है.
अपने ऐप्लिकेशन में किसी भी समय updateIfNewReleaseAvailable
को कॉल किया जा सकता है. उदाहरण के लिए, ऐप्लिकेशन की मुख्य गतिविधि के onResume
तरीके के दौरान updateIfNewReleaseAvailable
को कॉल किया जा सकता है.
इस उदाहरण में यह जांच की जाती है कि टेस्टर ने चेतावनियां चालू की हैं या नहीं और उसके पास नए बिल्ड का ऐक्सेस है या नहीं. अगर ये शर्तें पूरी होती हैं, तो इंस्टॉल करने के लिए उपलब्ध होने पर, एक डायलॉग दिखता है:
Kotlin+KTX
// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
firebaseAppDistribution.updateIfNewReleaseAvailable()
.addOnProgressListener { updateProgress ->
// (Optional) Implement custom progress updates in addition to
// automatic NotificationManager updates.
}
.addOnFailureListener { e ->
// (Optional) Handle errors.
if (e is FirebaseAppDistributionException) {
when (e.errorCode) {
Status.NOT_IMPLEMENTED -> {
// SDK did nothing. This is expected when building for Play.
}
else -> {
// Handle other errors.
}
}
}
}
Java
// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
FirebaseAppDistribution firebaseAppDistribution = FirebaseAppDistribution.getInstance();
firebaseAppDistribution.updateIfNewReleaseAvailable()
.addOnProgressListener(updateProgress -> {
// (Optional) Implement custom progress updates in addition to
// automatic NotificationManager updates.
})
.addOnFailureListener(e -> {
// (Optional) Handle errors.
if (e instanceof FirebaseAppDistributionException) {
switch (((FirebaseAppDistributionException)e).getErrorCode()) {
case NOT_IMPLEMENTED:
// SDK did nothing. This is expected when building for Play.
break;
default:
// Handle other errors.
break;
}
}
});
बेहतर कॉन्फ़िगरेशन
साइन इन करने के बेहतर तरीके का कॉन्फ़िगरेशन
signInTester
और isTesterSignedIn
तरीकों से, आपको टेस्टर के साइन-इन अनुभव को पसंद के मुताबिक बनाने में ज़्यादा मदद मिलती है. इससे, टेस्टर को आपके ऐप्लिकेशन के लुक और स्टाइल के हिसाब से बेहतर अनुभव मिलता है.
इस उदाहरण में यह जांच की जाती है कि टेस्टर ने पहले ही अपने
App Distribution टेस्टर खाते में साइन इन किया है या नहीं. इससे, साइन-इन करने के लिए अपना यूज़र इंटरफ़ेस (यूआई) सिर्फ़ उन टेस्टर को दिखाया जा सकता है जिन्होंने अब तक साइन इन नहीं किया है. जब टेस्टर साइन इन कर लेता है, तो updateIfNewReleaseAvailable
को कॉल करके यह देखा जा सकता है कि उसके पास नए वर्शन का ऐक्सेस है या नहीं.
Kotlin+KTX
// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn) {
// Start your sign-in UI here.
}
// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn) {
firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener {
// Handle failed update.
}
}
Java
// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn()) {
// Start your sign-in UI here.
}
// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn()) {
firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener( e -> {
// Handle failed update.
});
}
जब टेस्टर आपके साइन-इन यूज़र इंटरफ़ेस (यूआई) से आगे बढ़ने का विकल्प चुनता है, तो signInTester()
को कॉल करें:
Kotlin+KTX
firebaseAppDistribution.signInTester().addOnSuccessListener {
// Handle successful sign-in.
}.addOnFailureListener {
// Handle failed sign-in.
});
Java
firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
// Handle successful sign-in.
}).addOnFailureListener(e -> {
// Handle failed sign-in.
});
अपडेट के लिए बेहतर कॉन्फ़िगरेशन
checkForNewRelease
और updateApp
तरीकों की मदद से, टेस्टर को अपडेट करने के लिए कहा जाने का समय अपने हिसाब से तय किया जा सकता है. आपके पास पहले से बने अपडेट डायलॉग और डाउनलोड की प्रोग्रेस के इंडिकेटर को पसंद के मुताबिक बनाने का विकल्प भी है, ताकि वे आपके ऐप्लिकेशन के लुक और स्टाइल से मैच कर सकें.
ध्यान दें कि updateApp
, डाउनलोड की प्रोग्रेस की जानकारी नहीं देता. इसका मतलब है कि आपको NotificationManager
, ऐप्लिकेशन में स्थिति दिखाने वाले किसी टूल या किसी अन्य तरीके का इस्तेमाल करके, प्रोग्रेस के बारे में खुद जानकारी देनी होगी.
इस उदाहरण में, यह जांच की जाती है कि कोई नई रिलीज़ उपलब्ध है या नहीं. इसके बाद, एक कस्टम यूज़र इंटरफ़ेस (यूआई) दिखाया जाता है. checkForNewRelease
और updateApp
को कॉल करने से पहले, पक्का करें कि जांच करने वाला व्यक्ति, ऐडवांस साइन-इन कॉन्फ़िगरेशन का इस्तेमाल करके साइन इन कर चुका हो.
Kotlin+KTX
firebaseAppDistribution.checkForNewRelease().addOnSuccessListener { release ->
if (release != null) {
// New release available. Start your update UI here.
}
}.addOnFailureListener {
// Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
// if built for Play.
}
Java
firebaseAppDistribution.checkForNewRelease().addOnSuccessListener(release -> {
if (release != null) {
// New release available. Start your update UI here.
}
}).addOnFailureListener(e -> {
// Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
// if built for Play.
});
जब टेस्टर आपके अपडेट यूज़र इंटरफ़ेस (यूआई) से अपडेट करने का विकल्प चुनता है, तो updateApp()
को कॉल करें:
Kotlin+KTX
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
चौथा चरण: लागू करने की प्रोसेस को बनाना और उसकी जांच करना
अपना ऐप्लिकेशन बनाएं और Firebase कंसोल का इस्तेमाल करके, टेस्टर को बिल्ड डिस्ट्रिब्यूट करके, लागू करने की जांच करें.
सामान्य समस्याओं को हल करने में मदद पाने के लिए, App Distribution समस्या हल करने से जुड़ी गाइड पर जाएं. इनमें ये समस्याएं शामिल हैं:
- टेस्टर को इन-ऐप्लिकेशन सूचनाएं नहीं मिल रही हैं
- टेस्टर को Google में एक से ज़्यादा बार साइन इन करने के लिए कहा जा रहा है