מעבר אל Java Admin SDK גרסה 7

גרסה 7.0.0 של Firebase Admin SDK ל-Java כוללת כמה שינויים חשובים ב-API. עיקר השינויים ב-API בגרסה הזו הם תוספות ושיפורים בטיפול בשגיאות ב-Authentication וב-FCM.

שינויים כלליים בטיפול בשגיאות

כיתה הבסיס FirebaseException חושפת עכשיו כמה מאפיינים חדשים:

  • ErrorCode getErrorCode(): הפונקציה מחזירה את קוד השגיאה בפלטפורמה שמשויך לחריגה. בכל מופע של FirebaseException מובטח קוד שגיאת פלטפורמה שאינו null. קודי השגיאה האפשריים בפלטפורמה מוגדרים כסוג enum חדש ErrorCode.
  • IncomingHttpResponse getHttpResponse(): הפונקציה מחזירה את תגובת ה-HTTP שמשויכת לחריג. יכול להיות null אם החריגה נגרמה מסיבה אחרת מלבד תגובת HTTP לקצה העורפי.

כמו קודם, רוב סוגי החריגים האחרים שמוגדרים ב-SDK (לדוגמה, FirebaseAuthException, ‏ FirebaseMessagingException) נגזרים מהקלאס הבסיסי FirebaseException.

שינויים בטיפול בשגיאות אימות

כל ממשקי ה-API במחלקה FirebaseAuth עשויים לגרום למופעים של FirebaseAuthException. יכול להיות ש-API אסינכרוני (למשל, שיטות שמחזירות ApiFuture) יכשל עם ExecutionException שמקיף FirebaseAuthException. קודי השגיאה הספציפיים לאימות מוגדרים באופן ציבורי בסוג enum החדש AuthErrorCode.

לפני (<= v6.15.0)

try {
  FirebaseAuth.getInstance().verifyIdToken(idToken, true);
} catch (FirebaseAuthException ex) {
  if (ex.getErrorCode().equals("id-token-revoked")) {
    System.err.println("ID token has been revoked");
  } else {
    System.err.println("ID token is invalid");
  }
}

עכשיו (>= v7.0.0)

try {
  FirebaseAuth.getInstance().verifyIdToken(idToken, true);
} catch (FirebaseAuthException ex) {
  if (ex.getAuthErrorCode() == AuthErrorCode.REVOKED_ID_TOKEN) {
    System.err.println("ID token has been revoked");
  } else {
    System.err.println("ID token is invalid");
  }
}

השדה AuthErrorCode נוסף ל-ErrorCode שעבר בירושה מסוג FirebaseException הבסיסי. אם צריך, אפשר להטמיע לוגיקה לטיפול בשגיאות שבודקת את שני קודי השגיאה.

FCM שינויים בטיפול בשגיאות

כל ממשקי ה-API במחלקה FirebaseMessaging עשויים לגרום למופעים של FirebaseMessagingException. ממשקי API אסינכרוניים (למשל, methods שמחזירות ApiFuture) עלולות להיכשל עם ExecutionException שעוטף את השדה FirebaseMessagingException. קודי השגיאה הספציפיים ל-Authentication מוגדרים באופן ציבורי בסוג המניין החדש MessagingErrorCode.

לפני (<= v6.15.0)

try {
  FirebaseMessaging.getInstance().send(message);
} catch (FirebaseMessagingException ex) {
  if (ex.getErrorCode().equals("registration-token-not-registered")) {
    System.err.println("Device token has been unregistered");
  } else {
    System.err.println("Failed to send the notification");
  }
}

עכשיו (גרסה 7.0.0 ואילך)

try {
  FirebaseMessaging.getInstance().send(message);
} catch (FirebaseMessagingException ex) {
  if (ex.getMessagingErrorCode() == MessagingErrorCode.UNREGISTERED) {
    System.err.println("Device token has been unregistered");
  } else {
    System.err.println("Failed to send the notification");
  }
}

הערך MessagingErrorCode מתווסף לערך ErrorCode שהוענק בירושה מסוג הבסיס FirebaseException. אם צריך, אפשר להטמיע לוגיקה לטיפול בשגיאות שבודקת את שני קודי השגיאה.

Authentication הצהרות בהתאמה אישית

השיטה FirebaseAuth.setCustomClaims() שהוצאה משימוש הוסרה. במקום זאת, אתם צריכים להשתמש ב-FirebaseAuth.setCustomUserClaims().

לפני (<= v6.15.0)

FirebaseAuth.getInstance().setCustomClaims(uid, claims);

עכשיו (גרסה 7.0.0 ואילך)

FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);

FCM יצירת מודלים של התראות

הוסרו המנסחים הקודמים של הכיתה Notification. משתמשים בכיתה Notification.Builder כדי ליצור מכונות חדשות.

לפני (<= v6.15.0)

Notification notification = new Notification(title, body, url);

עכשיו (גרסה 7.0.0 ואילך)

Notification notification = Notification.builder()
  .setTitle(title)
  .setBody(body)
  .setImage(url)
  .build();