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


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

قبل از شروع

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

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

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

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

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

SDK Android App 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-beta14")

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

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

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

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

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

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


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

قبل از شروع

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

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

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

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

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

SDK Android App 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-beta14")

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

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

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

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

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

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


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

قبل از شروع

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

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

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

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

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

SDK Android App 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-beta14")

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

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

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

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

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

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


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

قبل از شروع

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

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

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

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

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

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

  • 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-beta14")

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

آیا به دنبال یک ماژول کتابخانه مخصوص کوتلین هستید؟ با شروع نسخه اکتبر 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 تماس بگیرید. به عنوان مثال ، می توانید در طول روش 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;
        }
      }
    });

پیکربندی پیشرفته

پیکربندی ورود به سیستم پیشرفته

Methods 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.
});

هنگامی که تستر تصمیم می گیرد با بروزرسانی از US UPDATE خود ادامه دهد ، با 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 شود