שליחת הודעה לבודקים על גרסאות build חדשות


ערכות ה-SDK האופציונליות של Firebase App Distribution ל-iOS ול-Android SDK מאפשרות להציג התראות בתוך האפליקציה לבודקים, כשיש גרסאות build חדשות של האפליקציה שזמינות להתקנה. במדריך הזה מוסבר איך להשתמש ב-SDK של App Distribution ל-iOS ול-Android כדי ליצור ולהתאים אישית התראות על גרסאות build חדשות לבודקים.

לפני שמתחילים

אם עדיין לא הוספתם את Firebase לפרויקט Android, אתם צריכים להוסיף אותו.

שלב 1: מפעילים את App Distribution Tester API

  1. בוחרים את הפרויקט במסוף Google Cloud.

  2. בקטע Firebase App Testers API, לוחצים על Enable (הפעלה).

שלב 2: מוסיפים את App Distribution לאפליקציה

שלב 2: מוסיפים את App Distribution לאפליקציה

‫Android SDK של App Distribution מורכב משתי ספריות:

  • ‫firebase-appdistribution-api – הספרייה שכוללת רק את ה-API, שאפשר לכלול בכל וריאנט build.
  • ‫firebase-appdistribution – ההטמעה המלאה של ה-SDK (אופציונלי).

הספרייה שכוללת רק API מאפשרת לקוד שלכם לשלוח קריאות ל-SDK. לקריאות לא תהיה השפעה אם ההטמעה המלאה של ה-SDK לא קיימת.

מצהירים על התלות ב-Android SDK של App Distribution בקובץ 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-beta21")

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

מחפשים מודול ספרייה ספציפי ל-Kotlin? החל מגרסת אוקטובר 2023, גם מפתחי Kotlin וגם מפתחי Java יכולים להסתמך על מודול הספרייה הראשי (לפרטים, אפשר לעיין בשאלות הנפוצות לגבי היוזמה הזו).

שלב 3: הגדרת התראות בתוך האפליקציה

ב-Android SDK של App Distribution יש כמה דרכים להגדיר התראות על גרסאות build באפליקציה לבודקים:

  • הגדרה בסיסית של התראות שכוללת תיבות דו-שיח מובנות להצגה לבודקים, שקשורות לעדכון האפליקציה ולכניסה לחשבון.
  • הגדרה מתקדמת של התראות שמאפשרת להתאים אישית את ממשק המשתמש.

אם זו הפעם הראשונה שאתם משתמשים ב-Android SDK של App Distribution, מומלץ להשתמש בהגדרה הבסיסית.

הגדרה בסיסית

אפשר להשתמש ב-updateIfNewReleaseAvailable כדי להציג תיבת דו-שיח מובנית להפעלת התראות לבודקים שעדיין לא הפעילו התראות, ואז לבדוק אם יש גרסה חדשה. כשמפעילים את ה-method, היא מבצעת את הפעולות הבאות:

  1. בודק אם הבודק הפעיל התראות. אם הבודק עדיין לא הפעיל התראות, השיטה תבקש מהבודק להיכנס ל-App Distribution באמצעות חשבון Google שלו.

  2. בודק אם יש גרסאות build חדשות שהבודק יכול להתקין.

  3. הצגת התראה מובנית שמבקשת מהבודק לעדכן.

  4. אם ה-build החדש הוא קובץ Android App Bundle ‏ (AAB), הבודק מופנה אל Google Play כדי להשלים את תהליך העדכון.

    אם ה-build החדש הוא חבילת אפליקציה ל-Android‏ (APK), ערכת ה-SDK מורידה את ה-build החדש ברקע ומבקשת מהבודק להתקין אותו כשההורדה מסתיימת. ערכת ה-SDK שולחת למשתמש התראות על התקדמות ההורדה באמצעות NotificationManager. אפשר גם להוסיף אינדיקטור התקדמות משלכם על ידי צירוף handler של onProgressUpdate ל-Task של updateIfNewReleaseAvailable.

אפשר להפעיל את 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 מאפשרות לכם להתאים אישית את חוויית הכניסה של הבודקים, כך שהיא תתאים יותר למראה ולסגנון של האפליקציה.

בדוגמה הבאה נבדק אם הבודק כבר נכנס לחשבון הבודק שלו ב-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.
    });

שלב 4: פיתוח ובדיקה של ההטמעה

מפתחים את האפליקציה ובודקים את ההטמעה על ידי הפצת ה-build לבודקים באמצעות מסוף Firebase.

במדריך לפתרון בעיות ב-App Distribution מוסבר איך לפתור בעיות נפוצות, כמו:

  • הבודק לא מקבל התראות באפליקציה
  • הבודק מתבקש להיכנס לחשבון Google יותר מפעם אחת