مهاجرت به Java Admin SDK v7

نسخه 7.0.0 Firebase Admin SDK برای جاوا تغییرات مهمی را در API معرفی می کند. در درجه اول، تغییرات API در این نسخه افزوده‌ها و بهبودهایی در مدیریت خطا برای Authentication و FCM هستند.

تغییرات رسیدگی به خطاهای عمومی

کلاس پایه FirebaseException اکنون چندین ویژگی جدید را نشان می دهد:

  • ErrorCode getErrorCode() : کد خطای پلتفرم مرتبط با استثنا را برمی‌گرداند. هر نمونه از FirebaseException دارای کد خطای پلتفرم غیر تهی تضمین شده است. کدهای خطای پلتفرم احتمالی به عنوان ErrorCode از نوع enum جدید تعریف می شوند.
  • IncomingHttpResponse getHttpResponse() : پاسخ HTTP مرتبط با استثنا را برمی گرداند. اگر این استثنا به دلیلی غیر از پاسخ HTTP پشتیبان ایجاد شده باشد، ممکن است باطل باشد.

مانند قبل، اکثر انواع استثناهای دیگر تعریف شده در SDK (به عنوان مثال، FirebaseAuthException ، FirebaseMessagingException ) از کلاس پایه FirebaseException مشتق شده اند.

تغییر در مدیریت خطای تأیید اعتبار

همه APIهای کلاس FirebaseAuth ممکن است نمونه هایی از FirebaseAuthException را ایجاد کنند. APIهای Async (به عنوان مثال، روش‌هایی که ApiFuture را برمی‌گردانند) ممکن است با ExecutionException که یک FirebaseAuthException می‌پیچد، شکست بخورند. کدهای خطای خاص Auth به طور عمومی در نوع enum جدید AuthErrorCode تعریف می شوند.

قبل (<= 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");
  }
}

اکنون (>= 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 علاوه بر ErrorCode است که از نوع پایه FirebaseException به ارث رسیده است. می توانید منطق رسیدگی به خطا را پیاده سازی کنید که در صورت لزوم هر دو کد خطا را بررسی می کند.

تغییرات رسیدگی به خطای FCM

همه APIهای کلاس FirebaseMessaging ممکن است نمونه هایی از FirebaseMessagingException را ایجاد کنند. APIهای Async (مثلاً متدهایی که یک ApiFuture را برمی‌گردانند) ممکن است با ExecutionException که FirebaseMessagingException را می‌پیچد شکست بخورند. کدهای خطای خاص Authentication به طور عمومی در نوع enum جدید MessagingErrorCode تعریف شده‌اند.

قبل (<= 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");
  }
}

اکنون (>= 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 علاوه بر ErrorCode است که از نوع پایه FirebaseException به ارث رسیده است. می توانید منطق رسیدگی به خطا را پیاده سازی کنید که در صورت لزوم هر دو کد خطا را بررسی می کند.

ادعاهای سفارشی Authentication

روش منسوخ FirebaseAuth.setCustomClaims() حذف شده است. به جای آن از FirebaseAuth.setCustomUserClaims() استفاده کنید.

قبل (<= v6.15.0)

FirebaseAuth.getInstance().setCustomClaims(uid, claims);

اکنون (>= v7.0.0)

FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);

سازندگان اعلان FCM

سازنده های منسوخ کلاس Notification حذف شده اند. از کلاس Notification.Builder برای ایجاد نمونه های جدید استفاده کنید.

قبل (<= v6.15.0)

Notification notification = new Notification(title, body, url);

اکنون (>= v7.0.0)

Notification notification = Notification.builder()
  .setTitle(title)
  .setBody(body)
  .setImage(url)
  .build();