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 về API. Chủ yếu, các thay đổi về API trong bản phát hành này là bổ sung và cải tiến trong việc xử lý lỗi cho Authentication và FCM.
Thay đổi chung về cách 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 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ể xảy ra được xác định là loại enum mớiErrorCode
.IncomingHttpResponse getHttpResponse()
: Trả về phản hồi HTTP liên kết với ngoại lệ. Có thể rỗng nếu ngoại lệ là do một lý do khác gây ra chứ không phải do phản hồi HTTP 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ề cách xử lý lỗi xác thực
Tất 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ộ (chẳng hạn như các phương thức trả về ApiFuture
) có thể không thành công với một ExecutionException
đóng gói một FirebaseAuthException
. Các mã lỗi dành riêng cho Auth được xác định công khai trong loại enum mới AuthErrorCode
.
Trước (<= phiên bản 6.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");
}
}
Nay (>= phiên bản 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
bổ sung cho ErrorCode
được kế thừa từ loại FirebaseException
cơ sở. Bạn có thể triển khai logic xử lý lỗi để kiểm tra cả hai mã lỗi nếu cần.
Thay đổi về cách xử lý lỗi FCM
Tất 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ộ (chẳng hạn như các phương thức trả về ApiFuture
) có thể không thành công với một ExecutionException
đóng gói một FirebaseMessagingException
. Các mã lỗi cụ thể của Authentication được xác định công khai trong loại enum mới MessagingErrorCode
.
Trước (<= phiên bản 6.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");
}
}
Bây giờ (>= phiên bản 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
là thuộc tính bổ sung cho ErrorCode
được kế thừa từ loại FirebaseException
cơ sở. 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 thông báo xác nhận quyền sở hữ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 (<= phiên bản 6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Bây giờ (>= phiên bản 7.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 (<= phiên bản 6.15.0)
Notification notification = new Notification(title, body, url);
Bây giờ (>= phiên bản 7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();