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

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

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

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

مرحله 1 : API توزیع برنامه تستر را فعال کنید

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

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

مرحله 2 : توزیع برنامه را به برنامه خود اضافه کنید

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

  • firebase-appdistribution-api - کتابخانه فقط API، که می توانید آن را در همه انواع ساخت اضافه کنید.
  • firebase-appdistribution - اجرای کامل SDK (اختیاری).

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

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

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

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

به دنبال یک ماژول کتابخانه خاص کاتلین هستید؟ با شروع انتشار اکتبر 2023 ، توسعه دهندگان Kotlin و Java می توانند به ماژول کتابخانه اصلی وابسته باشند (برای جزئیات، به سؤالات متداول در مورد این ابتکار مراجعه کنید).

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

App Distribution Android SDK راه‌های زیر را برای تنظیم هشدارهای ساخت درون‌برنامه برای آزمایش‌کنندگان ارائه می‌دهد:

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

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

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

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

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

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

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

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

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

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

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

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 به شما انعطاف‌پذیری بیشتری برای شخصی‌سازی تجربه ورود به سیستم آزمایش‌کننده‌تان می‌دهد، به طوری که تجربه آزمایش‌کننده می‌تواند بهتر با ظاهر و احساس برنامه شما مطابقت داشته باشد.

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

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

مرحله 4 : پیاده سازی خود را بسازید و آزمایش کنید

برنامه خود را بسازید و اجرای خود را با توزیع ساختن بین آزمایشگران با استفاده از کنسول Firebase آزمایش کنید.

برای راهنمایی در مورد مشکلات رایج، مانند:

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