کیتهای توسعه نرمافزاری iOS و Android اختیاری Firebase App Distribution به شما امکان میدهند هشدارهای درونبرنامهای را به آزمایشکنندگان خود نشان دهید، زمانی که ساختهای جدید برنامهتان برای نصب در دسترس هستند. این راهنما نحوه استفاده از App Distribution iOS و Android SDK را برای ایجاد و سفارشی کردن هشدارهای ساخت جدید برای آزمایش کنندگان خود توضیح می دهد.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید .
مرحله 1 : API App Distribution تستر را فعال کنید
پروژه خود را در کنسول Google Cloud انتخاب کنید.
در زیر 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
برای نمایش یک گفتگوی از پیش ساخته شده هشدارهای فعال برای آزمایشکنندگانی که هنوز هشدارها را فعال نکردهاند، استفاده کنید و سپس بررسی کنید که آیا ساخت جدیدی در دسترس است یا خیر. هنگامی که متد فراخوانی می شود، دنباله زیر را اعمال می کند:
بررسی میکند که آیا آزمایشکننده هشدارها را فعال کرده است. اگر آزمایشکننده هنوز هشدارها را فعال نکرده باشد، این روش از آزمایشکننده میخواهد تا با حساب Google خود وارد App Distribution شود.
ساختهای جدید موجود را برای نصب آزمایشکننده بررسی میکند.
یک هشدار از پیش ساخته شده را نشان می دهد که از آزمایش کننده می خواهد به روز رسانی کند.
اگر ساخت جدید یک بسته نرم افزاری 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 وارد شود