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ştirmelerden oluşur.
Genel hata işleme değişiklikleri
FirebaseException
temel sınıfı artık birkaç yeni özellik sunuyor:
ErrorCode getErrorCode()
: İstisnayla ilişkili platform hata kodunu döndürür.FirebaseException
türünün her örneğinin null olmayan bir platform hata koduna sahip olması garanti edilir. Olası platform hata kodları, yeni bir enum türüErrorCode
olarak 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 null olabilir.
Daha önce olduğu gibi, SDK'da tanımlanan diğer istisna türlerinin çoğu (ö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
örneklerini gönderebilir. 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ğrulamaya özgü hata kodları, yeni enum türü AuthErrorCode
'te herkese açık olarak tanımlanır.
Önceki sürümler (<= 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
'a ek olarak kullanılır. Gerekirse her iki hata kodunu da inceleyen bir hata işleme mantığı uygulayabilirsiniz.
Değişiklikler işlenirken FCM hata oluştu
FirebaseMessaging
sınıfındaki tüm API'ler FirebaseMessagingException
örnekleri atabilir. Eşzamansız API'ler (örneğin, ApiFuture
döndüren yöntemler), FirebaseMessagingException
sarmalayan bir ExecutionException
ile başarısız olabilir. Authentication'ye özgü hata kodları, yeni enum türü MessagingErrorCode
'te herkese açık olarak tanımlanır.
Önceki sürümler (<= 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 bir hata işleme mantığı uygulayabilirsiniz.
Authentication özel hak talebi
Desteği sonlandırılan FirebaseAuth.setCustomClaims()
yöntemi kaldırıldı. Bunun yerine FirebaseAuth.setCustomUserClaims()
özelliğini kullanın.
Önceki sürümler (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Şimdi (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
FCM bildirim oluşturucu
Notification
sınıfının desteği sonlandırılmış oluşturucuları kaldırıldı. Yeni örnekler oluşturmak için Notification.Builder
sınıfını kullanın.
Önceki sürümler (<= 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();