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

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

تغییرات کلی در مدیریت خطا

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

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

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

تغییرات مدیریت خطای Auth

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

قبل (<= نسخه ۶.۱۵.۰)

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");
  }
}

اکنون (>= نسخه ۷.۰.۰)

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های ناهمگام (برای مثال، متدهایی که یک ApiFuture برمی‌گردانند) ممکن است با یک ExecutionException که یک FirebaseMessagingException را در بر می‌گیرد، با شکست مواجه شوند. کدهای خطای مختص Authentication به صورت عمومی در نوع enum جدید MessagingErrorCode تعریف شده‌اند.

قبل (<= نسخه ۶.۱۵.۰)

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");
  }
}

اکنون (>= نسخه ۷.۰.۰)

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() استفاده کنید.

قبل (<= نسخه ۶.۱۵.۰)

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

اکنون (>= نسخه ۷.۰.۰)

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

سازنده‌های اعلان FCM

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

قبل (<= نسخه ۶.۱۵.۰)

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

اکنون (>= نسخه ۷.۰.۰)

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