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