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 instanceFirebaseException
dijamin 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();