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, 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
đượ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
.
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ộ (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 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");
}
}
Bây giờ (>= 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
là 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 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ộ (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 (<= 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
Xoá các hàm khởi tạo không dùng nữa của lớp Notification
. 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();