ערכות ה-SDK האופציונליות ל-iOS ול-Android מאפשרות להציג התראות בתוך האפליקציה לבוחנים שלכם כשגרסאות build חדשות של האפליקציה זמינות להתקנה. במדריך הזה מוסבר איך להשתמש בערכות ה-SDK ל-iOS ול-Android כדי ליצור התראות חדשות לגבי גרסאות build ולשנות את ההתאמה שלהן לבוחנים.Firebase App DistributionApp Distribution
לפני שמתחילים
אם עדיין לא הוספתם את Firebase לפרויקט Android, אתם צריכים להוסיף אותו.
שלב 1: מפעילים את App Distribution Tester API
בוחרים את הפרויקט במסוף Google Cloud.
בקטע Firebase App Testers API (ממשק API של בודקי אפליקציות ב-Firebase), לוחצים על הפעלה.
שלב 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 ב-builds של Play, מוסיפים את התלות בספרייה של ה-API בלבד לכל הווריאציות של ה-build.
מוסיפים את ההטמעה המלאה של ה-SDK רק לווריאציות שמיועדות באופן בלעדי לבדיקות לפני ההשקה.
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta19")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta19")
}
מחפשים מודול ספרייה ספציפי ל-Kotlin? החל מגרסת אוקטובר 2023, מפתחי Kotlin ומפתחי Java יכולים להסתמך על מודול הספרייה הראשי (פרטים נוספים זמינים בשאלות הנפוצות בנושא).
שלב 3: הגדרת התראות בתוך האפליקציה
App Distribution Android SDK מספק את הדרכים הבאות להגדרת התראות build בתוך האפליקציה עבור הבודקים:
- הגדרת התראה בסיסית שכוללת עדכון לאפליקציה מובנה ודיאלוגים של כניסה שמוצגים לבודקים.
- הגדרת התראות מתקדמת שמאפשרת לכם להתאים אישית את ממשק המשתמש.
אם אתם משתמשים ב-App Distribution Android SDK בפעם הראשונה, מומלץ להשתמש בהגדרה בסיסית.
הגדרה בסיסית
משתמשים ב-updateIfNewReleaseAvailable כדי להציג תיבת דו-שיח מוכנה מראש להפעלת התראות לבודקים שעדיין לא הפעילו התראות, ואז בודקים אם גרסה חדשה זמינה. כשמפעילים את ה-method, מתבצעת הפעולה הבאה:
השיטה בודקת אם הבודק הפעיל התראות. אם הבודק עדיין לא הפעיל התראות, השיטה מבקשת מהבודק להיכנס אל App Distribution באמצעות חשבון Google שלו.
בודקת אם יש גרסאות חדשות שזמינות למשתתפי הבדיקה להתקנה.
מוצגת התראה מוכנה מראש שמבקשת מהבודק לעדכן.
אם הגרסה החדשה היא קובץ Android App Bundle (AAB), המערכת מפנה את הבודק אל Google Play כדי להשלים את תהליך העדכון.
אם הגרסה החדשה היא חבילת אפליקציה ל-Android (APK), ה-SDK מוריד את הגרסה החדשה ברקע ומציג למשתמש הודעה להתקנה כשההורדה מסתיימת. ערכת ה-SDK שולחת למשתמש התראות על התקדמות ההורדה באמצעות
NotificationManager. אפשר גם להוסיף אינדיקטור התקדמות משלכם על ידי צירוף שלonProgressUpdatehandler ל-updateIfNewReleaseAvailableTask.
אפשר להפעיל את updateIfNewReleaseAvailable בכל שלב באפליקציה. לדוגמה, אפשר להפעיל את updateIfNewReleaseAvailable במהלך השיטה onResume של הפעילות הראשית באפליקציה.
בדוגמה הבאה נבדק אם הבודק הפעיל התראות ויש לו גישה לגרסת build חדשה. אם התנאים האלה מתקיימים, מוצגת תיבת דו-שיח כשהגרסה זמינה להתקנה:
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 מעניקות לכם גמישות רבה יותר בהתאמה אישית של חוויית הכניסה של הבודקים, כך שחוויית הבודקים תתאים יותר למראה ולתחושה של האפליקציה.
בדוגמה הבאה נבדק אם הבודק כבר נכנס לחשבון הבודק שלו. כך תוכלו לבחור להציג את ממשק המשתמש לכניסה רק לבודקים שעדיין לא נכנסו. אחרי שהבודק נכנס, תוכלו לקרוא ל-updateIfNewReleaseAvailable כדי לבדוק אם לבודק יש גישה לגרסת build חדשה.App Distribution
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.
});
שלב 4: בנייה ובדיקה של ההטמעה
מפתחים את האפליקציה ובודקים את ההטמעה על ידי הפצת הגרסה לבודקים באמצעות מסוף Firebase.
בApp Distribution מדריך לפתרון בעיות אפשר למצוא עזרה בפתרון בעיות נפוצות, כמו:
- הבודק לא מקבל התראות באפליקציה
- הבודק מתבקש להיכנס ל-Google יותר מפעם אחת