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


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

قبل از شروع

اگر قبلاً این کار را نکرده‌اید، Firebase را به پروژه Android خود اضافه کنید.

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

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

  2. در بخش Firebase App Testers API، روی فعال کردن کلیک کنید.

مرحله ۲: افزودن App Distribution به برنامه

مرحله ۲: افزودن App Distribution به برنامه

‫App Distribution Android SDK از دو کتابخانه تشکیل شده است:

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

کتابخانه فقط API به کد شما اجازه می‌دهد تا با کیت توسعه نرم‌افزار تماس بگیرد. اگر پیاده‌سازی کامل «کیت توسعه نرم‌افزار» وجود نداشته باشد، این تماس‌ها هیچ تأثیری نخواهند داشت.

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

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

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

به‌دنبال واحد کتابخانه ویژه Kotlin هستید؟ از نسخه اکتبر ۲۰۲۳ شروع می‌شود، توسعه‌دهندگان Kotlin و Java می‌توانند به واحد کتابخانه اصلی تکیه کنند (برای جزئیات، پرسشگان درباره این طرح ابتکاری را ببینید).

مرحله ۳: پیکربندی هشدارهای درون‌برنامه

«کیت توسعه نرم‌افزار Android» App Distribution روش‌های زیر را برای راه‌اندازی هشدارهای ساخت درون‌برنامه‌ای برای آزمونگران ارائه می‌دهد:

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

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

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

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

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

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

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

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

    اگر ساخت جدید «بسته برنامه Android»‏ (APK) باشد، «کیت توسعه نرم‌افزار» ساخت جدید را در پس‌زمینه بارگیری می‌کند و وقتی بارگیری کامل شد از آزمایش‌کننده می‌خواهد آن را نصب کند. کیت توسعه نرم‌افزار بااستفاده از NotificationManager اعلان‌های پیشرفت بارگیری را برای کاربر ارسال می‌کند. با پیوست کردن کنترل‌کننده onProgressUpdate به updateIfNewReleaseAvailable «تکلیف» می‌توانید نشانگر پیشرفت خودتان را اضافه کنید.

در هر نقطه‌ای از برنامه‌تان می‌توانید updateIfNewReleaseAvailable را فراخوانی کنید. برای مثال، می‌توانید updateIfNewReleaseAvailable را درطول روش onResume فعالیت اصلی برنامه فراخوانی کنید.

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

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 راهنمای عیب‌یابی مراجعه کنید:

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