Java için Firebase Admin SDK'sının 7.0.0 sürümünde API'de bazı önemli değişiklikler yapılmıştır. Bu sürümdeki API değişiklikleri, öncelikle Authentication ve FCM için hata işlemeyle ilgili eklemeler ve iyileştirmelerdir.
Genel hata işleme değişiklikleri
FirebaseException temel sınıfı artık çeşitli yeni özellikleri kullanıma sunuyor:
ErrorCode getErrorCode(): İstisnayla ilişkili platform hata kodunu döndürür.FirebaseExceptionöğesinin her örneğinde platform hata kodu kesinlikle boş olmayan bir değerdir. Olası platform hata kodları, yeni bir enum türüErrorCodeolarak tanımlanır.IncomingHttpResponse getHttpResponse(): İstisnayla ilişkili HTTP yanıtını döndürür. İstisna, arka uç HTTP yanıtı dışında bir nedenden kaynaklanıyorsa boş olabilir.
Daha önce olduğu gibi, SDK'da tanımlanan diğer birçok istisna türü (ör. FirebaseAuthException, FirebaseMessagingException) FirebaseException temel sınıfından türetilir.
Kimlik doğrulama hatası işleme değişiklikleri
FirebaseAuth sınıfındaki tüm API'ler FirebaseAuthException örnekleri oluşturabilir. Eşzamansız API'ler (örneğin, ApiFuture döndüren yöntemler) FirebaseAuthException sarmalayan bir ExecutionException ile başarısız olabilir. Kimlik doğramaya özgü hata kodları, yeni enum türünde AuthErrorCode herkese açık olarak tanımlanır.
Önce (<= 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");
}
}
Şimdi (>= 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, temel FirebaseException türünden devralınan ErrorCode öğesine ek olarak kullanılır. Gerekirse her iki hata kodunu da inceleyen hata işleme mantığı uygulayabilirsiniz.
FCM hata işleme değişiklikleri
FirebaseMessaging sınıfındaki tüm API'ler FirebaseMessagingException örnekleri oluşturabilir. Eşzamansız API'ler (örneğin, ApiFuture döndüren yöntemler) FirebaseMessagingException sarmalayan bir ExecutionException ile başarısız olabilir. Authentication ile ilgili hata kodları, yeni enum türü MessagingErrorCode içinde herkese açık olarak tanımlanır.
Önce (<= 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");
}
}
Şimdi (>= 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, temel FirebaseException türünden devralınan ErrorCode'a ek olarak kullanılır. Gerekirse her iki hata kodunu da inceleyen hata işleme mantığı uygulayabilirsiniz.
Authentication özel hak talepleri
Desteği sonlandırılan FirebaseAuth.setCustomClaims() yöntemi kaldırıldı. Bunun yerine FirebaseAuth.setCustomUserClaims() özelliğini kullanın.
Önce (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Şimdi (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
FCM bildirim oluşturucular
Notification sınıfının kullanımdan kaldırılan oluşturucuları kaldırıldı. Yeni örnekler oluşturmak için Notification.Builder sınıfını kullanın.
Önce (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Şimdi (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();