टेस्टर को नए बिल्ड के बारे में सूचना दें


जब आपके ऐप्लिकेशन का नया बिल्ड इंस्टॉल करने के लिए उपलब्ध हो, तो वैकल्पिक Firebase App Distribution iOS और Android SDK टूल की मदद से, टेस्टर को इन-ऐप्लिकेशन सूचनाएं दिखाने की सुविधा मिलती है. इस गाइड में, टेस्टर के लिए नए बिल्ड की सूचनाएं बनाने और उन्हें पसंद के मुताबिक बनाने के लिए, App Distribution iOS और Android SDK टूल का इस्तेमाल करने का तरीका बताया गया है.

शुरू करने से पहले

अगर आपने पहले से ही ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.

पहला चरण: App Distribution टेस्टर एपीआई को चालू करना

  1. Google Cloud कंसोल में अपना प्रोजेक्ट चुनें.

  2. Firebase App Testers API में जाकर, चालू करें पर क्लिक करें.

दूसरा चरण: अपने ऐप्लिकेशन में App Distribution जोड़ना

App Distribution Android SDK में दो लाइब्रेरी होती हैं:

  • firebase-appdistribution-api - सिर्फ़ एपीआई वाली लाइब्रेरी, जिसे सभी बिल्ड वैरिएंट में शामिल किया जा सकता है.
  • firebase-appdistribution - SDK टूल को पूरी तरह से लागू करना (ज़रूरी नहीं).

सिर्फ़ एपीआई लाइब्रेरी की मदद से, आपका कोड 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 का इस्तेमाल करें. इसके बाद, देखें कि नया बिल्ड उपलब्ध है या नहीं. कॉल किए जाने पर, यह तरीका इस क्रम में काम करता है:

  1. यह पता लगाता है कि किसी टेस्टर ने सूचनाएं पाने की सुविधा चालू की है या नहीं. अगर टेस्टर ने अब तक सूचनाएं पाने की सुविधा चालू नहीं की है, तो यह तरीका, टेस्टर को अपने Google खाते से App Distribution में साइन इन करने के लिए कहता है.

  2. टेस्टर के लिए, नए वर्शन उपलब्ध होने पर उन्हें इंस्टॉल करने की सुविधा.

  3. पहले से तैयार की गई चेतावनी दिखाता है, ताकि टेस्टर को अपडेट करने के लिए कहा जा सके.

  4. अगर नया बिल्ड 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 में एक से ज़्यादा बार साइन इन करने के लिए कहा जा रहा है