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

עכשיו (גרסה 7.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 ב-class‏ FirebaseMessaging עשויים להוציא אירועים של FirebaseMessagingException. יכול להיות ש-API אסינכרוני (למשל, שיטות שמחזירות 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();