Phiên bản 7.0.0 của SDK quản trị Firebase dành cho Java có một số thay đổi quan trọng trong API. Chủ yếu là các thay đổi về API trong bản phát hành này là những bổ sung và cải tiến trong việc xử lý lỗi cho Authentication và FCM.
Các thay đổi chung về xử lý lỗi
Lớp cơ sở FirebaseException hiện hiển thị một số thuộc tính mới:
ErrorCode getErrorCode(): Trả về mã lỗi nền tảng được liên kết với ngoại lệ. Mọi thực thể củaFirebaseExceptionđều được đảm bảo có mã lỗi nền tảng không rỗng. Các mã lỗi nền tảng có thể có được xác định là một loại enum mớiErrorCode.IncomingHttpResponse getHttpResponse(): Trả về phản hồi HTTP được liên kết với ngoại lệ. Có thể là giá trị rỗng nếu ngoại lệ do một lý do khác gây ra chứ không phải do phản hồi HTTP từ phần phụ trợ.
Giống như trước đây, hầu hết các loại ngoại lệ khác được xác định trong SDK (ví dụ: FirebaseAuthException, FirebaseMessagingException) đều bắt nguồn từ lớp cơ sở FirebaseException.
Các thay đổi về xử lý lỗi xác thực
Tất cả các API trong lớp FirebaseAuth đều có thể gửi các thực thể của
FirebaseAuthException. Các API không đồng bộ (ví dụ: các phương thức trả về ApiFuture) có thể không thành công với ExecutionException gói FirebaseAuthException. Các mã lỗi dành riêng cho Xác thực được xác định công khai trong loại enum mới AuthErrorCode.
Trước đây (<= 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");
}
}
Hiện tại (>= 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 là ngoài ErrorCode được kế thừa từ loại cơ sở
FirebaseException. Bạn có thể triển khai logic xử lý lỗi kiểm tra cả hai mã lỗi nếu cần.
Các thay đổi về xử lý lỗi FCM
Tất cả các API trong lớp FirebaseMessaging đều có thể gửi các thực thể của
FirebaseMessagingException. Các API không đồng bộ (ví dụ: các phương thức trả về ApiFuture) có thể không thành công với ExecutionException gói FirebaseMessagingException. Các mã lỗi dành riêng cho Authentication được xác định công khai
trong loại enum mới MessagingErrorCode.
Trước đây (<= 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");
}
}
Hiện tại (>= 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 là ngoài ErrorCode được kế thừa từ loại
cơ sở FirebaseException. Bạn có thể triển khai logic xử lý lỗi kiểm tra cả hai mã lỗi nếu cần.
Authentication yêu cầu tuỳ chỉnh
Phương thức FirebaseAuth.setCustomClaims() không dùng nữa đã bị xoá. Thay vào đó, hãy sử dụng FirebaseAuth.setCustomUserClaims().
Trước đây (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Hiện tại (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Hàm khởi tạo thông báo FCM
Các hàm khởi tạo không dùng nữa của lớp Notification đã bị xoá. Sử dụng lớp Notification.Builder để tạo các thực thể mới.
Trước đây (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Hiện tại (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();