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ü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 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
Kullanımdan kaldı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();