নতুন বিল্ড সম্পর্কে পরীক্ষকদের অবহিত করুন


ঐচ্ছিক Firebase App Distribution iOS এবং Android SDK গুলি আপনার অ্যাপের নতুন বিল্ড ইনস্টল করার জন্য উপলব্ধ হলে আপনার পরীক্ষকদের কাছে অ্যাপ-মধ্যস্থ সতর্কতা প্রদর্শন করতে দেয়। আপনার পরীক্ষকদের জন্য নতুন বিল্ড সতর্কতা তৈরি এবং কাস্টমাইজ করতে App Distribution iOS এবং Android SDK কীভাবে ব্যবহার করবেন তা এই নির্দেশিকা ব্যাখ্যা করে।

আপনি শুরু করার আগে

যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন

ধাপ 1 : App Distribution টেস্টার API সক্ষম করুন

  1. Google Cloud কনসোলে আপনার প্রকল্প নির্বাচন করুন।

  2. Firebase App Testers API-এর অধীনে, Enable এ ক্লিক করুন।

ধাপ 2 : আপনার অ্যাপে App Distribution যোগ করুন

App Distribution অ্যান্ড্রয়েড SDK দুটি লাইব্রেরি নিয়ে গঠিত:

  • firebase-appdistribution-api - শুধুমাত্র API-লাইব্রেরি, যা আপনি সমস্ত বিল্ড ভেরিয়েন্টে অন্তর্ভুক্ত করতে পারেন।
  • firebase-appdistribution - সম্পূর্ণ SDK বাস্তবায়ন (ঐচ্ছিক)।

API-শুধু লাইব্রেরি আপনার কোডকে SDK-তে কল করতে দেয়। সম্পূর্ণ SDK বাস্তবায়ন উপস্থিত না থাকলে কলগুলির কোনও প্রভাব থাকবে না৷

আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts বা <project>/<app-module>/build.gradle App Distribution Android SDK-এর জন্য নির্ভরতা ঘোষণা করুন ) আপনার Play বিল্ডে সম্পূর্ণ SDK বাস্তবায়নের স্ব-আপডেট কার্যকারিতা অন্তর্ভুক্ত করা এড়াতে, সমস্ত বিল্ড ভেরিয়েন্টে API-শুধু লাইব্রেরি নির্ভরতা যোগ করুন। শুধুমাত্র সম্পূর্ণ 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")
}

একটি কোটলিন-নির্দিষ্ট লাইব্রেরি মডিউল খুঁজছেন? অক্টোবর 2023 রিলিজ থেকে শুরু করে, কোটলিন এবং জাভা ডেভেলপার উভয়ই প্রধান লাইব্রেরি মডিউলের উপর নির্ভর করতে পারে (বিশদ বিবরণের জন্য, এই উদ্যোগ সম্পর্কে FAQ দেখুন)।

ধাপ 3 : অ্যাপ-মধ্যস্থ সতর্কতা কনফিগার করুন

App Distribution অ্যান্ড্রয়েড SDK আপনার পরীক্ষকদের জন্য অ্যাপ-মধ্যস্থ বিল্ড সতর্কতা সেট আপ করার নিম্নলিখিত উপায়গুলি প্রদান করে:

  • একটি প্রাথমিক সতর্কতা কনফিগারেশন যা পরীক্ষকদের কাছে প্রদর্শনের জন্য পূর্ব-নির্মিত অ্যাপ আপডেট এবং সাইন-ইন ডায়ালগের সাথে আসে।
  • একটি উন্নত সতর্কতা কনফিগারেশন যা আপনাকে আপনার নিজস্ব ইউজার ইন্টারফেস কাস্টমাইজ করতে দেয়।

আপনি যদি প্রথমবারের মতো App Distribution অ্যান্ড্রয়েড SDK ব্যবহার করেন, আমরা বেসিক কনফিগারেশন ব্যবহার করার পরামর্শ দিই।

মৌলিক কনফিগারেশন

পরীক্ষক যারা এখনও সতর্কতা সক্ষম করেনি তাদের জন্য একটি পূর্ব-নির্মিত সক্রিয় সতর্কতা ডায়ালগ প্রদর্শন করতে updateIfNewReleaseAvailable ব্যবহার করুন এবং তারপরে একটি নতুন বিল্ড উপলব্ধ কিনা তা পরীক্ষা করুন৷ যখন বলা হয়, পদ্ধতিটি নিম্নলিখিত ক্রমটি কার্যকর করে:

  1. একজন পরীক্ষক সতর্কতা সক্ষম করেছে কিনা তা পরীক্ষা করে। যদি পরীক্ষক এখনও সতর্কতা সক্ষম না করে থাকে, তবে পদ্ধতিটি পরীক্ষককে তাদের Google অ্যাকাউন্টের মাধ্যমে App Distribution সাইন ইন করতে অনুরোধ করে।

  2. পরীক্ষক ইনস্টল করার জন্য নতুন উপলব্ধ বিল্ডগুলি পরীক্ষা করে।

  3. পরীক্ষককে আপডেট করার জন্য অনুরোধ করে একটি পূর্ব-নির্মিত সতর্কতা প্রদর্শন করে।

  4. যদি নতুন বিল্ডটি একটি Android App Bundle (AAB) হয়, তাহলে আপডেট প্রক্রিয়াটি সম্পূর্ণ করতে পরীক্ষককে 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 পরীক্ষক অ্যাকাউন্টে সাইন ইন করেছেন কিনা তা নিম্নলিখিত উদাহরণটি পরীক্ষা করে। এটি আপনাকে শুধুমাত্র সেই পরীক্ষকদের জন্য আপনার সাইন-ইন ইউজার ইন্টারফেস (UI) প্রদর্শন করতে দেয় যারা এখনও সাইন ইন করেনি৷ পরীক্ষক সাইন ইন করার পরে, পরীক্ষকের একটি নতুন বিল্ডে অ্যাক্সেস আছে কিনা তা পরীক্ষা করার জন্য আপনি 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.
    });
}

আপনার সাইন-ইন UI থেকে, যখন পরীক্ষক এগিয়ে যেতে পছন্দ করেন, 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 , কোনো ধরনের ইন-অ্যাপ স্ট্যাটাস ডিসপ্লে, বা অন্য কোনো পদ্ধতি ব্যবহার করে আপনার নিজের অগ্রগতির ইঙ্গিত বাস্তবায়ন করতে হবে।

নিম্নলিখিত উদাহরণটি একটি নতুন রিলিজ উপলব্ধ কিনা তা পরীক্ষা করে এবং তারপর একটি কাস্টম UI প্রদর্শন করে। 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.
});

যখন পরীক্ষক আপনার আপডেট UI থেকে আপডেটের সাথে এগিয়ে যেতে পছন্দ করেন, updateApp() কল করুন :

Kotlin+KTX

firebaseAppDistribution.updateApp()
    .addOnProgressListener { updateState ->
      // Use updateState to show update progress.
    }

Java

firebaseAppDistribution.updateApp()
    .addOnProgressListener(updateState -> {
      // Use updateState to show update progress.
    });

ধাপ 4 : আপনার বাস্তবায়ন তৈরি করুন এবং পরীক্ষা করুন

আপনার অ্যাপ তৈরি করুন এবং Firebase কনসোল ব্যবহার করে পরীক্ষকদের মধ্যে বিল্ড বিতরণ করে আপনার বাস্তবায়ন পরীক্ষা করুন।

সাধারণ সমস্যাগুলির জন্য সহায়তার জন্য App Distribution সমস্যা সমাধান নির্দেশিকা দেখুন, যেমন:

  • পরীক্ষক অ্যাপ-মধ্যস্থ সতর্কতা পাচ্ছেন না
  • পরীক্ষককে একাধিকবার Google এ সাইন ইন করার জন্য অনুরোধ করা হচ্ছে