نقل البيانات إلى الإصدار 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();