Phiên bản 7.0.0 của SDK quản trị Firebase dành cho Java giới thiệu một số thay đổi quan trọng trong API. Về cơ bản, những 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 Xác thực amd FCM.
Thay đổi xử lý lỗi chung
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 quan đến ngoại lệ. Mọi phiên bản 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 được liên kết với ngoại lệ. Có thể không có giá trị nếu ngoại lệ xảy ra do một lý do khác ngoài 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
.
Thay đổi xử lý lỗi xác thực
Tất cả các API trong lớp FirebaseAuth
có thể đưa ra các phiên bản của FirebaseAuthException
. 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
bao bọc FirebaseAuthException
. 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 (<= 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");
}
}
Bây giờ (>= 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
nằm ngoài 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 xử lý lỗi FCM
Tất cả các API trong lớp FirebaseMessaging
có thể đưa ra các phiên bản FirebaseMessagingException
. 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
bao bọc FirebaseMessagingException
. 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 MessagingErrorCode
.
Trước (<= 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");
}
}
Bây giờ (>= 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
nằm ngoài 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.
Xác nhận quyền sở hữu tùy chỉnh
Phương thức FirebaseAuth.setCustomClaims()
không được dùng nữa đã bị xóa. Thay vào đó, hãy sử dụng FirebaseAuth.setCustomUserClaims()
.
Trước (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Bây giờ (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Trình tạo thông báo FCM
Các hàm tạo không được dùng nữa của lớp Notification
đã bị xóa. Sử dụng lớp Notification.Builder
để tạo phiên bản mới.
Trước (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Bây giờ (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();