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

يقدّم الإصدار 7.0.0 من حزمة تطوير البرامج (SDK) للمشرف في Firebase لنظام 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();