Di chuyển sang SDK quản trị viên Java phiên bản 7

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 AuthenticationFCM.

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ủa FirebaseException đề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ới ErrorCode.
  • 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();