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