نقل البيانات إلى الإصدار 7 من حزمة تطوير البرامج (SDK) لمشرف Java

يقدّم الإصدار 7.0.0 من حزمة Firebase Admin SDK للغة Java بعض التغييرات المهمة في واجهة برمجة التطبيقات. تتمثّل التغييرات الرئيسية في واجهة برمجة التطبيقات في هذا الإصدار في إضافة وتحسينات على معالجة الأخطاء في Authentication وFCM.

التغييرات العامة في معالجة الأخطاء

تعرض الفئة الأساسية FirebaseException الآن عدة سمات جديدة:

  • ErrorCode getErrorCode(): تعرض رمز الخطأ في النظام الأساسي المرتبط بالاستثناء. يضمن كل مثيل من FirebaseException أن يكون له رمز خطأ غير فارغ في النظام الأساسي. يتم تحديد رموز الخطأ المحتملة في النظام الأساسي كنوع تعداد جديد ErrorCode.
  • IncomingHttpResponse getHttpResponse(): تعرض استجابة HTTP المرتبطة بالاستثناء. قد تكون القيمة فارغة إذا كان الاستثناء ناتجًا عن سبب آخر غير استجابة HTTP من الخلفية.

كما كان من قبل، فإنّ معظم أنواع الاستثناءات الأخرى المحدّدة في حزمة تطوير البرامج (SDK) (مثل FirebaseAuthException وFirebaseMessagingException) مشتقة من الصنف الأساسي FirebaseException.

التغييرات في معالجة أخطاء "المصادقة"

قد تعرض جميع واجهات برمجة التطبيقات في فئة FirebaseAuth مثيلات من FirebaseAuthException. قد تفشل واجهات برمجة التطبيقات غير المتزامنة (على سبيل المثال، الطرق التي تعرض ApiFuture) مع ExecutionException التي تتضمّن FirebaseAuthException. يتم تحديد رموز الخطأ الخاصة بالمصادقة بشكل علني في نوع التعداد الجديد AuthErrorCode.

الإصدارات السابقة (الإصدار 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");
  }
}

الإصدارات الحالية (الإصدار 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 إلى ErrorCode الموروثة من نوع FirebaseException الأساسي. يمكنك تنفيذ منطق معالجة الأخطاء الذي يفحص كلا رمزي الخطأ إذا لزم الأمر.

التغييرات في معالجة أخطاء FCM

قد تعرض جميع واجهات برمجة التطبيقات في FirebaseMessaging مثيلات من FirebaseMessagingException. قد تفشل واجهات برمجة التطبيقات غير المتزامنة (على سبيل المثال، الطرق التي تعرض ApiFuture) مع ExecutionException التي تتضمّن FirebaseMessagingException. يتم تحديد رموز الخطأ الخاصة بـ Authentication بشكل علني في نوع التعداد الجديد MessagingErrorCode.

الإصدارات السابقة (الإصدار 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");
  }
}

الإصدارات الحالية (الإصدار 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 إلى ErrorCode الموروثة من نوع FirebaseException الأساسي. يمكنك تنفيذ منطق معالجة الأخطاء الذي يفحص كلا رمزي الخطأ إذا لزم الأمر.

Authentication مطالبات مخصّصة

تمت إزالة الطريقة FirebaseAuth.setCustomClaims() التي تم إيقافها. استخدِم الطريقة FirebaseAuth.setCustomUserClaims() بدلاً منها.

الإصدارات السابقة (الإصدار 6.15.0 والإصدارات الأقدم)

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

الإصدارات الحالية (الإصدار 7.0.0 والإصدارات الأحدث)

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

دوال إنشاء إشعارات FCM

تمت إزالة دوال إنشاء فئة Notification التي تم إيقافها. استخدِم فئة Notification.Builder لإنشاء مثيلات جديدة.

الإصدارات السابقة (الإصدار 6.15.0 والإصدارات الأقدم)

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

الإصدارات الحالية (الإصدار 7.0.0 والإصدارات الأحدث)

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