FCM Hata Kodları

HTTP v1 API'si için REST hata kodları

HTTP v1 API için HTTP hata yanıtları bir hata kodu, hata mesajı ve hata durumu içerir. Ayrıca, hatayla ilgili daha fazla ayrıntı içeren bir details dizisi de içerebilirler.

Aşağıda iki örnek hata yanıtı verilmiştir:

1. örnek: Veri mesajında geçersiz değer içeren bir HTTP v1 API isteğinden gelen hata yanıtı

{
  "error": {
    "code": 400,
    "message": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "message.data[0].value",
            "description": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12"
          }
        ]
      }
    ]
  }
}

2. örnek: Geçersiz kayıt jetonu içeren bir HTTP v1 API isteğinden gelen hata yanıtı

{
  "error": {
    "code": 400,
    "message": "The registration token is not a valid FCM registration token",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
        "errorCode": "INVALID_ARGUMENT"
      }
    ]
   }
}

Her iki mesajın da aynı koda ve duruma sahip olduğuna ancak ayrıntılar dizisinin farklı türlerde değerler içerdiğine dikkat edin. İlk örnekte, istek değerlerinde hata olduğunu gösteren type.googleapis.com/google.rpc.BadRequest türü vardır. Tür type.googleapis.com/google.firebase.fcm.v1.FcmError olan ikinci örnekte FCM'ye özgü bir hata var. Birçok hata için ayrıntılar dizisi, hata ayıklama ve çözüm bulma konusunda ihtiyacınız olan bilgileri içerir.

Aşağıdaki tabloda, FCM v1 REST API hata kodları ve açıklamaları listelenmiştir.

Hata Kodu Açıklama ve Çözüm Adımları
UNSPECIFIED_ERROR Bu hatayla ilgili başka bilgi yok. Yok.
INVALID_ARGUMENT (HTTP hata kodu = 400) İstek parametreleri geçersizdi. Hangi alanın geçersiz olduğunu belirtmek için google.rpc.BadRequest türünde bir uzantı döndürülür. Olası nedenler arasında geçersiz kayıt, geçersiz paket adı, çok büyük mesaj, geçersiz veri anahtarı, geçersiz TTL veya diğer geçersiz parametreler yer alır.
Geçersiz kayıt: Sunucuya ilettiğiniz kayıt jetonunun biçimini kontrol edin. Bu jetonun, istemci uygulamasının FCM'ye kaydolduktan sonra aldığı kayıt jetonuyla eşleştiğinden emin olun. Jetonu kısaltmayın veya ek karakterler eklemeyin.
Geçersiz paket adı: Mesajın, paket adı istekte iletilen değerle eşleşen bir kayıt jetonuna gönderildiğinden emin olun.
İleti çok büyük: Bir iletiye dahil edilen yük verilerinin toplam boyutunun FCM sınırlarını (Çoğu ileti için 4096 bayt, konulara gönderilen iletiler için 2048 bayt) aşmadığını kontrol edin. Anahtarlar ve değerler buna dahildir.
Geçersiz veri anahtarı: Yük verilerinin, FCM tarafından dahili olarak kullanılan bir anahtar (ör. from veya gcm ya da google ön ekine sahip herhangi bir değer) içermediğinden emin olun. Bazı kelimelerin (ör. collapse_key) FCM tarafından da kullanıldığını ancak yükte izin verildiğini unutmayın. Bu durumda, yük değeri FCM değeri tarafından geçersiz kılınır.
Geçersiz TTL: TTL'de kullanılan değerin 0 ile 2.419.200 (4 hafta) arasında saniye cinsinden bir süreyi temsil eden tam sayı olup olmadığını kontrol edin.
Geçersiz parametreler: Sağlanan parametrelerin doğru ada ve türe sahip olup olmadığını kontrol edin.
UNREGISTERED (HTTP hata kodu = 404) Uygulama örneğinin FCM kaydı kaldırıldı. Bu genellikle kullanılan jetonun artık geçerli olmadığı ve yeni bir jetonun kullanılması gerektiği anlamına gelir. Bu hata, eksik kayıt jetonlarından veya kayıtlı olmayan jetonlardan kaynaklanabilir.
Missing Registration: İletinin hedefi bir token değeri ise isteğin bir kayıt jetonu içerdiğinden emin olun.
Kayıtlı değil: Mevcut bir kayıt jetonu, aşağıdakiler de dahil olmak üzere çeşitli senaryolarda geçerliliğini yitirebilir:
- İstemci uygulamasının FCM kaydı iptal edilirse.
- İstemci uygulaması otomatik olarak kaydı silinirse (ör. kullanıcı uygulamayı kaldırırsa) Örneğin, iOS'te APNs geri bildirim hizmeti, APNs jetonunu geçersiz olarak bildirmişse.
- Kayıt jetonunun süresi dolarsa (örneğin, Google kayıt jetonlarını yenilemeye karar verebilir veya iOS cihazlar için APN jetonunun süresi dolmuş olabilir).
- İstemci uygulaması güncellenmiş ancak yeni sürüm mesaj alacak şekilde yapılandırılmamışsa.
Tüm bu durumlarda, bu kayıt jetonunu uygulama sunucusundan kaldırın ve mesaj göndermek için kullanmayı bırakın.
SENDER_ID_MISMATCH (HTTP hata kodu = 403) Kimliği doğrulanmış gönderen kimliği, kayıt jetonunun gönderen kimliğinden farklı. Kayıt jetonu, belirli bir gönderen grubuna bağlıdır. Bir istemci uygulaması FCM'ye kaydolduğunda hangi gönderenlerin mesaj göndermesine izin verildiğini belirtmelidir. İstemci uygulamasına mesaj gönderirken bu gönderen kimliklerinden birini kullanmanız gerekir. Farklı bir gönderene geçerseniz mevcut kayıt jetonları çalışmaz.
QUOTA_EXCEEDED (HTTP hata kodu = 429) İleti hedefi için gönderme sınırı aşıldı. Hangi kotanın aşıldığını belirtmek için google.rpc.QuotaFailure türünde bir uzantı döndürülür. Bu hataya, ileti hızı kotasının, cihaz ileti hızı kotasının veya konu ileti hızı kotasının aşılması neden olabilir.
İleti hızı aşıldı: İletilerin gönderilme hızı çok yüksek. Gönderdiğiniz iletilerin genel sıklığını azaltmanız gerekir. Reddedilen iletileri yeniden denemek için minimum 1 dakikalık ilk gecikmeyle eksponansiyel geri yükleme kullanın.
Cihaz mesaj hızı aşıldı: Belirli bir cihaza gönderilen mesajların hızı çok yüksek. Tek bir cihaza yönelik mesaj sıklık sınırlamasınabakın. Bu cihaza gönderilen mesaj sayısını azaltın ve göndermeyi yeniden denemek için eksponansiyel geri yükleme kullanın.
Konu mesajı hızı aşıldı: Belirli bir konunun abonelerine gönderilen mesajların hızı çok yüksek. Bu konu için gönderilen mesaj sayısını azaltın ve göndermeyi yeniden denemek için minimum 1 dakikalık ilk gecikmeyle eksponansiyel geri yükleme kullanın.
UNAVAILABLE (HTTP hata kodu = 503) Sunucu aşırı yüklenmiş. Sunucu, isteği zamanında işleyemedi. Aynı isteği yeniden deneyin ancak şunları yapmanız gerekir:
- FCM bağlantı sunucusundan gelen yanıta dahil edilmişse Retry-After üstbilgisini dikkate alın.
- Yeniden deneme mekanizmanızda eksponansiyel geri yükleme uygulayın. (Örneğin, ilk yeniden denemeden önce bir saniye beklediyseniz bir sonraki denemeden önce en az iki saniye, ardından 4 saniye vb. bekleyin.) Birden fazla ileti gönderiyorsanız jittering uygulamayı düşünebilirsiniz. Daha fazla bilgi için Yeniden denemeleri yönetmebölümünü inceleyin veya FCM'yi etkileyen devam eden hizmet kesintileri olup olmadığını belirlemek için FCM Durum Kontrol Paneli'ni kontrol edin. Sorunlara neden olan gönderenler, izin verilmeyenler listesine alınma riskiyle karşı karşıyadır.
INTERNAL (HTTP hata kodu = 500) Bilinmeyen bir dahili hata oluştu. Sunucu, isteği işlerken bir hatayla karşılaştı. Yeniden denemeleri işleme bölümündeki önerileri uygulayarak aynı isteği yeniden deneyebilir veya FCM durum kontrol panelini kontrol edebilirsiniz. FCM'yi etkileyen devam eden hizmet kesintileri olup olmadığını belirlemek için Hata devam ederse lütfen Firebase Destek Ekibi ile iletişime geçin.
THIRD_PARTY_AUTH_ERROR (HTTP hata kodu = 401) APN sertifikası veya web push kimlik doğrulama anahtarı geçersiz ya da eksik. iOS cihazı veya web push kaydını hedefleyen bir mesaj gönderilemedi. Geliştirme ve üretim kimlik bilgilerinizin geçerliliğini kontrol edin.

Admin SDK hata kodları

Aşağıdaki tabloda, önerilen çözüm adımları da dahil olmak üzere Firebase Admin FCM API hata kodları ve açıklamaları listelenmektedir.

Hata Kodu Açıklama ve Çözüm Adımları
messaging/invalid-argument Bir FCM yöntemine geçersiz bir bağımsız değişken sağlandı. Hata mesajında ek bilgiler yer alır.
messaging/invalid-recipient Hedeflenen mesaj alıcısı geçersiz. Hata mesajında ek bilgiler yer almalıdır.
messaging/invalid-payload Geçersiz bir mesaj yükü nesnesi sağlandı. Hata mesajında ek bilgiler yer alır.
messaging/invalid-data-payload-key Veri mesajı yükü geçersiz bir anahtar içeriyor. Kısıtlanmış anahtarlar için DataMessagePayload referans belgelerine bakın.
messaging/payload-size-limit-exceeded Sağlanan ileti yükü, FCM boyut sınırlarını aşıyor. Sınır, çoğu ileti için 4.096 bayttır. Konulara gönderilen iletiler için sınır 2.048 bayttır. Toplam yük boyutuna hem anahtarlar hem de değerler dahildir.
messaging/invalid-options Geçersiz bir mesaj seçenekleri nesnesi sağlandı. Hata mesajında ek bilgiler yer almalıdır.
messaging/invalid-registration-token Geçersiz kayıt jetonu sağlandı. Bu değerin, istemci uygulamasının FCM ile kaydolurken aldığı kayıt jetonuyla eşleştiğinden emin olun. Bu değeri kısaltmayın veya ek karakterler eklemeyin.
messaging/registration-token-not-registered Sağlanan kayıt jetonu kayıtlı değil. Daha önce geçerli olan bir kayıt jetonunun kaydı, aşağıdakiler de dahil olmak üzere çeşitli nedenlerle silinebilir:
  • İstemci uygulaması, FCM hizmetinden kaydını sildi.
  • İstemci uygulaması otomatik olarak kayıttan çıkarıldı. Bu durum, kullanıcı uygulamayı kaldırdığında veya Apple platformlarında APNs Geri Bildirim Hizmeti, APNs jetonunu geçersiz olarak bildirdiğinde ortaya çıkabilir.
  • Kayıt jetonunun süresi doldu. Örneğin, Google kayıt jetonlarını yenilemeye karar verebilir veya Apple cihazlar için APNs jetonunun süresi dolmuş olabilir.
  • İstemci uygulaması güncellendi ancak yeni sürüm, mesaj alacak şekilde yapılandırılmadı.
Tüm bu durumlarda, bu kayıt jetonunu kaldırın ve mesaj göndermek için kullanmayı bırakın.
messaging/invalid-package-name Mesaj, paket adı sağlanan restrictedPackageName seçeneğiyle eşleşmeyen bir kayıt jetonuna gönderildi.
messaging/message-rate-exceeded Belirli bir hedefe gönderilen iletilerin oranı çok yüksek. Bu cihaza veya konuya gönderilen mesaj sayısını azaltın ve bu hedefe hemen yeniden göndermeyi denemeyin.
messaging/device-message-rate-exceeded Belirli bir cihaza gönderilen mesajların oranı çok yüksek. Bu cihaza gönderilen mesaj sayısını azaltın ve bu cihaza hemen tekrar göndermeyi denemeyin.
messaging/topics-message-rate-exceeded Belirli bir konunun abonelerine gönderilen mesajların oranı çok yüksek. Bu konu için gönderilen mesaj sayısını azaltın ve bu konuya hemen tekrar mesaj göndermeyi denemeyin.
messaging/topics-subscription-rate-exceeded Belirli bir konuyla ilgili abonelik yönetimi isteklerinin oranı çok yüksek. Söz konusu konu için gönderilen isteklerin sayısını azaltın ve isteği hemen yeniden denemeyin.
messaging/too-many-topics Bir kayıt jetonu, maksimum sayıda konuya abone oldu ve daha fazla konuya abone olamaz.
messaging/invalid-apns-credentials Gerekli APNs SSL sertifikası yüklenmediği veya süresi dolduğu için bir Apple cihazına yönelik mesaj gönderilemedi. Geliştirme ve üretim sertifikalarınızın geçerliliğini kontrol edin.
messaging/mismatched-credential Bu SDK'nın kimliğini doğrulamak için kullanılan kimlik bilgisi, sağlanan kayıt jetonuna karşılık gelen cihaza mesaj gönderme iznine sahip değil. Kimlik bilgisi ve kayıt jetonunun aynı Firebase projesine ait olduğundan emin olun. Firebase Admin SDK kimlik doğrulama ile ilgili dokümanlar için Uygulamanıza Firebase'i ekleme başlıklı makaleyi inceleyin.
messaging/authentication-error SDK, FCM sunucularında kimlik doğrulaması yapamadı. Firebase Admin SDK kimlik doğrulamasını, FCM mesajları göndermek için gerekli izinlere sahip bir kimlik bilgisiyle yaptığınızdan emin olun. Firebase Admin SDKs kimlik doğrulama ile ilgili dokümanlar için Uygulamanıza Firebase ekleme başlıklı makaleyi inceleyin.
messaging/server-unavailable FCM sunucusu, isteği zamanında işleyemedi. Aynı isteği yeniden denemeniz gerekir ancak şunları yapmalısınız:
  • FCM Connection Server'dan gelen yanıta dahil edilmişse Retry-After üstbilgisini dikkate alın.
  • Yeniden deneme mekanizmanızda üstel geri yükleme uygulayın. Örneğin, ilk yeniden denemeden önce bir saniye beklediyseniz bir sonraki denemeden önce en az iki saniye, ardından dört saniye bekleyin ve saniye aralığını artırmaya devam edin. Birden fazla mesaj gönderiyorsanız tüm mesajlar için aynı anda yeni bir istek göndermemek amacıyla her birini bağımsız olarak rastgele bir süre daha geciktirin.
Sorunlara neden olan gönderenler engellenenler listesine alınma riskiyle karşı karşıya kalır.
messaging/internal-error FCM sunucusu, isteği işlemeye çalışırken bir hatayla karşılaştı. Önceki messaging/server-unavailable satırında listelenen şartları uygulayarak aynı isteği yeniden deneyebilirsiniz. Hata devam ederse lütfen sorunu hata raporu destek kanalımıza bildirin.
messaging/unknown-error Bilinmeyen bir sunucu hatası döndürüldü. Daha fazla bilgi için hata mesajındaki ham sunucu yanıtına bakın. Bu hatayı alırsanız lütfen hata mesajının tamamını Hata Raporu destek kanalımıza bildirin.