يقدّم الإصدار 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. يتم تحديد رموز الخطأ الخاصة بخدمة Auth بشكل علني في نوع التعداد الجديد 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();