آزمایش کنندگان را در مورد ساخت های جدید مطلع کنید


کیت‌های توسعه نرم‌افزار اختیاری Firebase App Distribution برای iOS و Android به شما این امکان را می‌دهند که وقتی نسخه‌های جدید برنامه شما برای نصب در دسترس هستند، هشدارهای درون برنامه‌ای را به آزمایش‌کنندگان خود نمایش دهید. این راهنما نحوه استفاده از کیت‌های توسعه App Distribution برای iOS و Android را برای ایجاد و سفارشی‌سازی هشدارهای ساخت جدید برای آزمایش‌کنندگان شما توضیح می‌دهد.

قبل از اینکه شروع کنی

اگر هنوز Firebase را به پروژه اندروید خود اضافه نکرده‌اید، آن را اضافه کنید.

مرحله ۱ : فعال کردن API تستر App Distribution

  1. پروژه خود را در کنسول Google Cloud انتخاب کنید.

  2. در زیر Firebase App Testers API، روی Enable کلیک کنید.

مرحله ۲ : App Distribution به برنامه خود اضافه کنید

SDK اندروید App Distribution شامل دو کتابخانه است:

  • firebase-appdistribution-api - کتابخانه‌ی فقط API که می‌توانید آن را در تمام نسخه‌های ساخت (build variants) بگنجانید.
  • firebase-appdistribution - پیاده‌سازی کامل SDK (اختیاری).

کتابخانه‌ی صرفاً API به کد شما اجازه می‌دهد تا SDK را فراخوانی کند. اگر پیاده‌سازی کامل SDK وجود نداشته باشد، فراخوانی‌ها هیچ تاثیری نخواهند داشت.

وابستگی مربوط به SDK اندروید App Distribution Android SDK) را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradle ) تعریف کنید. برای جلوگیری از گنجاندن قابلیت به‌روزرسانی خودکار پیاده‌سازی کامل SDK در نسخه‌های Play خود، وابستگی کتابخانه‌ای API-only را به همه نسخه‌های Build اضافه کنید. پیاده‌سازی کامل 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 Android SDK) روش‌های زیر را برای تنظیم هشدارهای ساخت درون‌برنامه‌ای برای آزمایش‌کنندگان شما فراهم می‌کند:

  • یک پیکربندی هشدار اولیه که با به‌روزرسانی برنامه از پیش ساخته شده و دیالوگ‌های ورود به سیستم برای نمایش به آزمایش‌کنندگان ارائه می‌شود.
  • پیکربندی پیشرفته هشدار که به شما امکان می‌دهد رابط کاربری خود را سفارشی کنید.

اگر برای اولین بار از App Distribution Android SDK استفاده می‌کنید، توصیه می‌کنیم از Basic Configuration استفاده کنید.

پیکربندی اولیه

از updateIfNewReleaseAvailable برای نمایش یک پنجره‌ی هشدار فعال‌سازی از پیش ساخته شده به آزمایش‌کنندگانی که هنوز هشدارها را فعال نکرده‌اند استفاده کنید و سپس بررسی کنید که آیا نسخه جدیدی در دسترس است یا خیر. هنگام فراخوانی، این متد توالی زیر را اجرا می‌کند:

  1. بررسی می‌کند که آیا آزمایش‌کننده هشدارها را فعال کرده است یا خیر. اگر آزمایش‌کننده هنوز هشدارها را فعال نکرده باشد، این روش از آزمایش‌کننده می‌خواهد که با حساب گوگل خود به App Distribution وارد شود.

  2. بررسی می‌کند که آیا نسخه‌های جدید برای نصب توسط آزمایش‌کننده موجود است یا خیر.

  3. یک هشدار از پیش ساخته شده را نمایش می‌دهد که تستر را به روز رسانی می‌کند.

  4. اگر نسخه جدید یک بسته نرم‌افزاری اندروید (AAB) باشد، آزمایش‌کننده را برای تکمیل فرآیند به‌روزرسانی به Google Play هدایت می‌کند.

    اگر نسخه جدید یک برنامه اندروید PacKage (APK) باشد، SDK نسخه جدید را در پس‌زمینه دانلود می‌کند و پس از اتمام دانلود، از تستر می‌خواهد که آن را نصب کند. SDK با استفاده از NotificationManager اعلان‌های پیشرفت دانلود را برای کاربر ارسال می‌کند. همچنین می‌توانید با اتصال یک کنترل‌کننده onProgressUpdate به updateIfNewReleaseAvailable Task، نشانگر پیشرفت خود را اضافه کنید.

شما می‌توانید updateIfNewReleaseAvailable در هر نقطه‌ای از برنامه خود فراخوانی کنید. برای مثال، می‌توانید در طول متد onResume از activity اصلی برنامه 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.
    });
}

از رابط کاربری ورود به سیستم، وقتی آزمایش‌کننده تصمیم به ادامه کار می‌گیرد، 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 ، نوعی نمایش وضعیت درون برنامه‌ای یا رویکرد دیگری پیاده‌سازی کنید.

مثال زیر بررسی می‌کند که آیا نسخه جدیدی در دسترس است یا خیر و سپس یک رابط کاربری سفارشی نمایش می‌دهد. قبل از فراخوانی 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.
});

وقتی تستر تصمیم می‌گیرد به‌روزرسانی را از رابط کاربری به‌روزرسانی شما ادامه دهد، 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 دیدن کنید:

  • تستر هشدارهای درون برنامه‌ای دریافت نمی‌کند
  • از آزمایش‌کننده خواسته می‌شود بیش از یک بار وارد گوگل شود