Versi 7.0.0 Firebase Admin SDK untuk Java memperkenalkan beberapa perubahan API penting. Pada dasarnya, perubahan API dalam rilis ini adalah penambahan dan peningkatan kualitas dalam penanganan error untuk Authentication dan FCM.
Perubahan penanganan error umum
Class dasar FirebaseException sekarang mengekspos beberapa atribut baru:
ErrorCode getErrorCode(): Menampilkan kode error platform yang terkait dengan pengecualian. Setiap instanceFirebaseExceptiondijamin memiliki kode error platform bukan null. Kode error platform yang mungkin ditentukan sebagai jenis enum baruErrorCode.IncomingHttpResponse getHttpResponse(): Menampilkan respons HTTP yang terkait dengan pengecualian. Mungkin null jika pengecualian disebabkan oleh alasan selain respons HTTP backend.
Seperti sebelumnya, sebagian besar jenis pengecualian lain yang ditetapkan dalam SDK (misalnya,
FirebaseAuthException, FirebaseMessagingException) berasal dari class dasar
FirebaseException.
Perubahan penanganan error Auth
Semua API di class FirebaseAuth dapat menampilkan instance
FirebaseAuthException. API asinkron (misalnya, metode yang menampilkan ApiFuture) mungkin gagal dengan ExecutionException yang menggabungkan FirebaseAuthException. Kode error khusus Auth ditentukan secara publik dalam
jenis enum baru AuthErrorCode.
Versi sebelumnya (<= 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");
}
}
Versi sekarang (>= 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 adalah tambahan untuk ErrorCode yang diwarisi dari jenis FirebaseException
dasar. Anda dapat menerapkan logika penanganan error yang memeriksa
kedua kode error jika diperlukan.
Perubahan penanganan error FCM
Semua API di class FirebaseMessaging dapat menampilkan instance
FirebaseMessagingException. API asinkron (misalnya, metode yang menampilkan
ApiFuture) mungkin gagal dengan ExecutionException yang menggabungkan
FirebaseMessagingException. Kode error khusus Authentication ditentukan
secara publik dalam enum jenis MessagingErrorCode baru.
Versi sebelumnya (<= 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");
}
}
Versi sekarang (>= v7.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 adalah tambahan untuk ErrorCode yang diwarisi dari
jenis FirebaseException dasar. Anda dapat menerapkan logika penanganan error yang
memeriksa kedua kode error jika diperlukan.
Klaim kustom Authentication
Metode FirebaseAuth.setCustomClaims() yang tidak digunakan lagi telah dihapus. Gunakan
FirebaseAuth.setCustomUserClaims() sebagai gantinya.
Versi sebelumnya (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Versi sekarang (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Konstruktor notifikasi FCM
Konstruktor class Notification yang sudah tidak digunakan lagi telah dihapus. Gunakan
class Notification.Builder untuk membuat instance baru.
Versi sebelumnya (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Versi sekarang (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();