يقدّم الإصدار 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();