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


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

শুরু করার আগে

যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে Firebase যোগ করুন

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

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

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

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

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

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

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

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

dependencies {
    // ADD the API-only library to all variants
    implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta17")

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta17")
}

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

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

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

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

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

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

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

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

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

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

  4. যদি নতুন বিল্ডটি একটি অ্যান্ড্রয়েড অ্যাপ বান্ডেল (AAB) হয়, তাহলে আপডেট প্রক্রিয়াটি সম্পূর্ণ করার জন্য পরীক্ষকটিকে Google Play তে পুনঃনির্দেশিত করে।

    যদি নতুন বিল্ডটি একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন PacKage (APK) হয়, তাহলে SDK ব্যাকগ্রাউন্ডে নতুন বিল্ডটি ডাউনলোড করে এবং ডাউনলোড সম্পূর্ণ হলে পরীক্ষককে ইনস্টল করার জন্য অনুরোধ করে। SDK NotificationManager ব্যবহার করে ব্যবহারকারীকে ডাউনলোড অগ্রগতির বিজ্ঞপ্তি পাঠায়। আপনি updateIfNewReleaseAvailable Task-এ একটি onProgressUpdate হ্যান্ডলার সংযুক্ত করে আপনার নিজস্ব অগ্রগতি সূচকও যোগ করতে পারেন।

আপনি আপনার অ্যাপের যেকোনো স্থানে updateIfNewReleaseAvailable কল করতে পারেন। উদাহরণস্বরূপ, অ্যাপের প্রধান কার্যকলাপের onResume পদ্ধতির সময় আপনি updateIfNewReleaseAvailable কল করতে পারেন।

নিম্নলিখিত উদাহরণটি পরীক্ষা করে যে পরীক্ষক সতর্কতা সক্ষম করেছে কিনা এবং একটি নতুন বিল্ডে অ্যাক্সেস আছে কিনা। যদি এই শর্তগুলি পূরণ হয়, তাহলে বিল্ডটি ইনস্টল করার জন্য উপলব্ধ হলে একটি ডায়ালগ প্রদর্শিত হবে:

Kotlin

// 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

// 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

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

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

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-এ সাইন ইন করতে বলা হচ্ছে