Java एडमिन SDK v7 पर माइग्रेट करें

Java के लिए Firebase Admin SDK टूल के वर्शन 7.0.0 में, एपीआई में कुछ अहम बदलाव किए गए हैं. मुख्य रूप से, इस रिलीज़ में एपीआई में किए गए बदलावों में, Authentication और FCM के लिए गड़बड़ी को मैनेज करने के तरीके में सुधार और कुछ चीज़ें जोड़ी गई हैं.

गड़बड़ी ठीक करने से जुड़े सामान्य बदलाव

FirebaseException बेस क्लास में अब कई नए एट्रिब्यूट दिखते हैं:

  • ErrorCode getErrorCode(): अपवाद से जुड़ा प्लैटफ़ॉर्म गड़बड़ी कोड दिखाता है. FirebaseException के हर इंस्टेंस में, प्लैटफ़ॉर्म गड़बड़ी कोड नॉन-नल होना चाहिए. प्लैटफ़ॉर्म से जुड़ी गड़बड़ी के संभावित कोड, नए टाइप के ErrorCode के तौर पर तय किए गए हैं.
  • IncomingHttpResponse getHttpResponse(): अपवाद से जुड़ा एचटीटीपी रिस्पॉन्स दिखाता है. अगर अपवाद, बैकएंड एचटीटीपी रिस्पॉन्स के अलावा किसी दूसरी वजह से हुआ है, तो यह शून्य हो सकता है.

पहले की तरह, SDK टूल में तय किए गए ज़्यादातर अन्य अपवाद टाइप (उदाहरण के लिए, FirebaseAuthException, FirebaseMessagingException), FirebaseException बेस क्लास से लिए गए हैं.

पुष्टि करने से जुड़ी गड़बड़ी को ठीक करने के तरीके में बदलाव

FirebaseAuth क्लास के सभी एपीआई, FirebaseAuthException के इंस्टेंस दिखा सकते हैं. एसिंक्रोनस एपीआई (उदाहरण के लिए, ऐसे तरीके जो ApiFuture दिखाते हैं) ExecutionException के साथ काम नहीं कर सकते, जो FirebaseAuthException को रैप करता है. पुष्टि से जुड़ी गड़बड़ी के कोड, सार्वजनिक तौर पर नए टाइप AuthErrorCode में तय किए गए हैं.

इससे पहले (<= v6.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");
  }
}

अब (>= v7.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, बेस FirebaseException टाइप से इनहेरिट किए गए ErrorCode के अलावा है. गड़बड़ी को ठीक करने वाला ऐसा लॉजिक लागू किया जा सकता है जो ज़रूरत होने पर, दोनों गड़बड़ी कोड की जांच करता हो.

FCM गड़बड़ी ठीक करने से जुड़े बदलाव

FirebaseMessaging क्लास के सभी एपीआई, FirebaseMessagingException के इंस्टेंस दिखा सकते हैं. एसिंक्रोनस एपीआई (उदाहरण के लिए, ऐसे तरीके जो ApiFuture दिखाते हैं) ExecutionException के साथ काम नहीं कर सकते, जो FirebaseMessagingException को रैप करता है. Authentication से जुड़ी गड़बड़ी के कोड, नए टाइप के MessagingErrorCode में सार्वजनिक तौर पर तय किए गए हैं.

इससे पहले (<= v6.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");
  }
}

अब (>= v7.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() का इस्तेमाल करें.

इससे पहले (<= v6.15.0)

FirebaseAuth.getInstance().setCustomClaims(uid, claims);

अब (>= v7.0.0)

FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);

FCM सूचना बनाने वाले फ़ंक्शन

Notification क्लास के अब काम नहीं करने वाले कंस्ट्रक्टर हटा दिए गए हैं. नए इंस्टेंस बनाने के लिए, Notification.Builder क्लास का इस्तेमाल करें.

इससे पहले (<= v6.15.0)

Notification notification = new Notification(title, body, url);

अब (>= v7.0.0)

Notification notification = Notification.builder()
  .setTitle(title)
  .setBody(body)
  .setImage(url)
  .build();