גרסה 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();