Bu dokümanda, uygulama sunucunuzdan Firebase Cloud Messaging üzerinden istemci uygulamalarına mesaj iletmek için kullanılan HTTP söz dizimi referansı sağlanmaktadır.
Eski HTTP protokolü kullanıldığında uygulama sunucunuz tüm HTTP isteklerini şu uç noktaya yönlendirmelidir:
https://fcm.googleapis.com/fcm/send
Kullanılabilir parametreler ve seçenekler aşağıdaki geniş kategorilere ayrılır:
Aşağı akış mesajı söz dizimi
Bu bölümde, yayın mesajları gönderme ve Firebase Cloud Messaging'ten gelen HTTP yanıtlarını yorumlamayla ilgili söz dizimi verilmiştir.
Aşağı akış HTTP mesajları (JSON)
Aşağıdaki tabloda, HTTP JSON mesajlarının hedefleri, seçenekleri ve yükü listelenmiştir.
Parametre | Kullanım | Açıklama | |
---|---|---|---|
Hedefler | |||
to |
İsteğe bağlı, dize |
Bu parametre, iletinin alıcısını belirtir.
Değer, bir cihazın kayıt jetonu, bir cihaz grubunun bildirim anahtarı veya tek bir konu olabilir (önüne |
|
registration_ids | İsteğe bağlı, dize dizisi |
Bu parametre, birden fazla kayıt jetonuna gönderilen bir çoklu yayın mesajının alıcısını belirtir.
Değer, çoklu yayın mesajının gönderileceği kayıt jetonlarının dizisi olmalıdır. Dizi en az 1 ve en fazla 1.000 kayıt jetonu içermelidir. Tek bir cihaza mesaj göndermek için Çoklu yayın iletilerine yalnızca HTTP JSON biçimi kullanılarak izin verilir. |
|
condition |
İsteğe bağlı, dize | Bu parametre, mesaj hedefini belirleyen koşulların mantıksal ifadesini belirtir. Desteklenen koşul: "Konularda "konunuz"" şeklinde biçimlendirilmiş konu. Bu değer büyük/küçük harfe duyarlı değildir. Desteklenen operatörler: |
|
notification_key Kullanımdan kaldırıldı |
İsteğe bağlı, dize | Bu parametre için destek sonlandırılmıştır. Bunun yerine, mesaj alıcılarını belirtmek için |
|
Seçenekler | |||
collapse_key |
İsteğe bağlı, dize | Bu parametre, yayın devam ettirildiğinde yalnızca son iletinin gönderilmesi için daraltılabilen bir ileti grubunu (ör. Mesajların gönderilme sırasının garanti edilmediğini unutmayın. Not: Herhangi bir zamanda en fazla 4 farklı daraltma anahtarına izin verilir. Bu, FCM'ün istemci uygulaması başına aynı anda 4 farklı mesaj saklayabileceği anlamına gelir. Bu sayıyı aşarsanız FCM'ün hangi 4 daraltma anahtarını saklayacağı garanti edilmez. |
|
priority |
İsteğe bağlı, dize | İletinin önceliğini ayarlar. Geçerli değerler "normal" ve "yüksek"tir. Apple platformlarında bunlar APN'ler için 5 ve 10. önceliklere karşılık gelir. Varsayılan olarak bildirim mesajları yüksek öncelikli, veri mesajları ise normal öncelikli olarak gönderilir. Normal öncelik, istemci uygulamasının pil tüketimini optimize eder ve anında yayınlama gerekmediği sürece kullanılmalıdır. Normal öncelikli mesajlar, uygulama tarafından belirtilmeyen bir gecikmeyle alınabilir. Yüksek öncelikli bir mesaj gönderildiğinde hemen gönderilir ve uygulama bir bildirim görüntüleyebilir. |
|
content_available |
İsteğe bağlı, boole | Apple platformlarında, APNs yükünde |
|
mutable_content |
İsteğe bağlı, JSON boole | Apple platformlarında, APNs yükünde |
|
time_to_live |
İsteğe bağlı, sayı | Bu parametre, cihaz çevrimdışıysa mesajın FCM depolama alanında ne kadar süre (saniye cinsinden) tutulacağını belirtir. Desteklenme süresi maksimum 4 hafta, varsayılan değer 4 haftadır. Daha fazla bilgi için Mesajın geçerlilik süresini ayarlama başlıklı makaleyi inceleyin. |
|
restricted_package_
(yalnızca Android) |
İsteğe bağlı, dize | Bu parametre, mesajı almak için kayıt jetonlarının eşleşmesi gereken uygulamanın paket adını belirtir. | |
dry_run |
İsteğe bağlı, boole | Bu parametre
|
|
Yük | |||
data |
İsteğe bağlı, nesne | Bu parametre, mesajın yükü için özel anahtar/değer çiftlerini belirtir. Örneğin, Apple platformlarında, ileti APN'ler üzerinden gönderiliyorsa özel veri alanlarını temsil eder. FCM üzerinden gönderilirse Android'de bu, Anahtar, ayrılmış bir kelime ("from", "message_type" veya "google" ya da "gcm" ile başlayan herhangi bir kelime) olmamalıdır. Bu tabloda tanımlanan kelimelerden hiçbirini kullanmayın ( Dize türünde değerler önerilir. Nesnelerdeki veya dize olmayan diğer veri türlerindeki (ör. tam sayılar veya boole değerleri) değerleri dizeye dönüştürmeniz gerekir. |
|
notification |
İsteğe bağlı, nesne | Bu parametre, bildirim yükü için önceden tanımlanmış, kullanıcı tarafından görülebilen anahtar/değer çiftlerini belirtir. Ayrıntılar için bildirim yükü desteğine bakın.
Bildirim mesajı ve veri mesajı seçenekleri hakkında daha fazla bilgi için
Mesaj türleri başlıklı makaleyi inceleyin. Bir bildirim yükü sağlanırsa veya Apple cihaza gönderilen bir mesaj için content_available seçeneği true olarak ayarlanırsa mesaj APN'ler üzerinden gönderilir. Aksi takdirde FCM üzerinden gönderilir.
|
Bildirim yükü desteği
Aşağıdaki tablolarda, iOS ve Android için bildirim mesajları oluşturmak amacıyla kullanılabilen önceden tanımlanmış anahtarlar listelenmiştir.
Parametre | Kullanım | Açıklama |
---|---|---|
title |
İsteğe bağlı, dize |
Bildirimin başlığı. Bu alan telefonlarda ve tabletlerde görünmez. |
body |
İsteğe bağlı, dize |
Bildirimin gövde metni. |
sound |
İsteğe bağlı, dize |
Cihaz bildirimi aldığında çalınacak ses.
İstemci uygulamasının ana paketindeki veya uygulamanın veri kapsayıcısının |
badge |
İsteğe bağlı, dize |
Ana ekran uygulama simgesinde bulunan rozetin değeri. Belirtilmemişse rozet değiştirilmez.
|
click_action |
İsteğe bağlı, dize |
Kullanıcının bildirimi tıklamasıyla ilişkili işlem.
APN'ler yükünde |
subtitle |
İsteğe bağlı, dize |
Bildirimin alt başlığı. |
body_loc_key |
İsteğe bağlı, dize |
Gövde metnini kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için kullanılacak, uygulamanın dize kaynaklarındaki gövde dizesinin anahtarı.
APN'ler yükünde Daha fazla bilgi için Yük Anahtarı Referansı ve Uzak Bildirimlerinizin İçeriğini Yerelleştirme başlıklı makaleleri inceleyin. |
body_loc_args |
İsteğe bağlı, JSON dizisi olarak dize |
Ana metni kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için
APNs yükünde Daha fazla bilgi için Yük Anahtarı Referansı ve Uzak Bildirimlerinizin İçeriğini Yerelleştirme başlıklı makaleleri inceleyin. |
title_loc_key |
İsteğe bağlı, dize |
Başlık metnini kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için uygulamanın dize kaynaklarındaki başlık dizesinin anahtarı.
APNs yükünde Daha fazla bilgi için Yük Anahtarı Referansı ve Uzak Bildirimlerinizin İçeriğini Yerelleştirme başlıklı makaleleri inceleyin. |
title_loc_args |
İsteğe bağlı, JSON dizisi olarak dize |
Başlık metnini kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için
APN'ler yükünde Daha fazla bilgi için Yük Anahtarı Referansı ve Uzak Bildirimlerinizin İçeriğini Yerelleştirme başlıklı makaleleri inceleyin. |
Parametre | Kullanım | Açıklama |
---|---|---|
title |
İsteğe bağlı, dize |
Bildirimin başlığı. |
body |
İsteğe bağlı, dize |
Bildirimin gövde metni. |
android_channel_id |
İsteğe bağlı, dize |
Bildirimin kanal kimliği (Android O'da yeni). Uygulama, bu kanal kimliğine sahip bir bildirim alınmadan önce bu kanal kimliğiyle bir kanal oluşturmalıdır. İstekte bu kanal kimliğini göndermezseniz veya sağlanan kanal kimliği henüz uygulama tarafından oluşturulmamışsa FCM, uygulama manifestinde belirtilen kanal kimliğini kullanır. |
icon |
İsteğe bağlı, dize |
Bildirimin simgesi.
Çekilebilir kaynak |
sound |
İsteğe bağlı, dize |
Cihaz bildirimi aldığında çalacak ses.
|
tag |
İsteğe bağlı, dize |
Bildirim çekmecesindeki mevcut bildirimleri değiştirmek için kullanılan tanımlayıcı. Belirtilmezse her istek yeni bir bildirim oluşturur. Belirtilmişse ve aynı etikete sahip bir bildirim zaten gösteriliyorsa yeni bildirim, bildirim çekmecesindeki mevcut bildirimin yerini alır. |
color |
İsteğe bağlı, dize |
Bildirimin simge rengi. |
click_action |
İsteğe bağlı, dize |
Kullanıcının bildirimi tıklamasıyla ilişkili işlem. Belirtiliyse kullanıcı bildirimi tıkladığında eşleşen bir intent filtresine sahip bir etkinlik başlatılır. |
body_loc_key |
İsteğe bağlı, dize |
Ana metni kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için uygulamanın dize kaynaklarındaki ana metin dizesinin anahtarı. Daha fazla bilgi için Dize Kaynakları bölümüne bakın. |
body_loc_args |
İsteğe bağlı, JSON dizisi olarak dize |
Ana metni kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için Daha fazla bilgi için Biçimlendirme ve Stil başlıklı makaleyi inceleyin. |
title_loc_key |
İsteğe bağlı, dize |
Başlık metnini kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için uygulamanın dize kaynaklarındaki başlık dizesinin anahtarı. Daha fazla bilgi için Dize Kaynakları başlıklı makaleyi inceleyin. |
title_loc_args |
İsteğe bağlı, JSON dizisi olarak dize |
Başlık metnini kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için kullanılacak olan Daha fazla bilgi için Biçimlendirme ve Stil başlıklı makaleyi inceleyin. |
Parametre | Kullanım | Açıklama |
---|---|---|
title |
İsteğe bağlı, dize |
Bildirimin başlığı. |
body |
İsteğe bağlı, dize |
Bildirimin gövde metni. |
icon |
İsteğe bağlı, dize |
Bildirim simgesinde kullanılacak URL. |
click_action |
İsteğe bağlı, dize |
Kullanıcının bildirimi tıklamasıyla ilişkili işlem. Tüm URL değerleri için HTTPS gereklidir. |
Aşağı akış HTTP mesajları (Düz Metin)
Aşağıdaki tabloda, aşağı akış düz metin HTTP mesajlarındaki hedefler, seçenekler ve yükün söz dizimi listelenmiştir.
Parametre | Kullanım | Açıklama |
---|---|---|
Hedefler | ||
registration_id |
Zorunlu, dize | Bu parametre, mesajı alan istemci uygulamalarını (kayıt jetonları) belirtir. Çoklu yayın mesajlarına (birden fazla kayıt jetonuna gönderme) yalnızca HTTP JSON biçimi kullanılarak izin verilir. |
Seçenekler | ||
collapse_key |
İsteğe bağlı, dize | Ayrıntılar için tablo 1'e bakın. |
time_to_live |
İsteğe bağlı, sayı | Ayrıntılar için tablo 1'e bakın. |
restricted_package_name |
İsteğe bağlı, dize | Ayrıntılar için tablo 1'e bakın. |
dry_run |
İsteğe bağlı, boole | Ayrıntılar için 1. tablo'ya bakın. |
Yük | ||
data.<key> |
İsteğe bağlı, dize | Bu parametre, mesajın yükü için anahtar/değer çiftlerini belirtir. Anahtar/değer parametrelerinin sayısı için bir sınırlama yoktur ancak toplam ileti boyutu sınırı 4096 bayttır. Örneğin, Android'de Anahtar, ayrılmış bir kelime ("from", "message_type" veya "google" ya da "gcm" ile başlayan herhangi bir kelime) olmamalıdır. Bu tabloda tanımlanan kelimelerin hiçbirini ( |
Aşağı akış mesaj yanıtını yorumlama
Uygulama sunucusu, FCM adresinden gönderilen mesaj yanıtını yorumlamak için hem mesaj yanıtı üst bilgisini hem de gövdesini değerlendirmelidir. Olası yanıtlar aşağıdaki tabloda açıklanmıştır.
Yanıt | Açıklama |
---|---|
200 | İleti başarıyla işlendi. Yanıt metni, mesaj durumuyla ilgili daha fazla bilgi içerir ancak biçimi, isteğin JSON veya düz metin olmasına bağlıdır. Daha fazla bilgi için tablo 5'e bakın. |
400 | Yalnızca JSON istekleri için geçerlidir. İsteğin JSON olarak ayrıştırılamadığını veya geçersiz alanlar içerdiğini (örneğin, bir sayının beklendiği dizenin iletilmesini) belirtir. Hatanın tam nedeni yanıtta açıklanır ve istek yeniden denenmeden önce sorun giderilmelidir. |
401 | Gönderen hesabının kimliği doğrulanırken hata oluştu. |
5xx | 500-599 aralığındaki hatalar (500 veya 503 gibi), istek işlenmeye çalışılırken FCM arka ucunda dahili bir hata oluştuğunu veya sunucunun geçici olarak kullanılamadığını (örneğin, zaman aşımları nedeniyle) belirtir. Gönderen, yanıta dahil edilen tüm Retry-After başlıklarını dikkate alarak daha sonra yeniden denemelidir. Uygulama sunucuları, üstel geri yükleme uygulamalıdır. |
Aşağıdaki tabloda, yayın mesajı yanıtı gövdesinde (JSON) bulunan alanlar listelenmiştir.
Parametre | Kullanım | Açıklama |
---|---|---|
multicast_id |
Zorunlu, sayı | Çoklu yayın mesajını tanımlayan benzersiz kimlik (sayı). |
success |
Zorunlu, sayı | Hatasız şekilde işlenen mesajların sayısı. |
failure |
Zorunlu, sayı | İşlenememiş iletilerin sayısı. |
results |
Gerekli, nesne dizisi | İşlenen iletilerin durumunu temsil eden nesne dizisi. Nesneler, istekle aynı sırada listelenir (ör. istekteki her kayıt kimliği için sonucu, yanıtta aynı dizinde listelenir).
|
Parametre | Kullanım | Açıklama |
---|---|---|
message_id |
İsteğe bağlı, sayı | FCM isteği başarıyla aldığında ve abone olunan tüm cihazlara teslim etmeyi denediğinde gösterilen konu mesaj kimliği. |
error |
İsteğe bağlı, dize | Mesaj işlenirken oluşan hata. Olası değerler tablo 9'da bulunabilir. |
Parametre | Kullanım | Açıklama |
---|---|---|
id |
Zorunlu, dize | Bu parametre, başarıyla işlenen benzersiz ileti kimliğini (FCM) belirtir. |
registration_id |
İsteğe bağlı, dize | Bu parametre, mesajın işlendiği ve gönderildiği istemci uygulamasının kayıt jetonunu belirtir. |
Parametre | Kullanım | Açıklama |
---|---|---|
Error |
Zorunlu, dize | Bu parametre, alıcı için ileti işlenirken hata değerini belirtir. Ayrıntılar için 9. tablo'ya bakın. |
Aşağı akış mesajı hata yanıtı kodları
Aşağıdaki tabloda, aşağı akış mesajları için hata yanıtı kodları listelenmektedir.
Hata | HTTP Kodu | Önerilen işlem |
---|---|---|
Kayıt jetonu eksik | 200 + error:MissingRegistration | İsteğin bir kayıt jetonu (basit metin mesajında registration_id alanında veya JSON'da to ya da registration_ids alanında) içerdiğini kontrol edin. |
Geçersiz Kayıt Jetonu | 200 + hata:GeçersizKayıt | Sunucuya ilettiğiniz kayıt jetonunun biçimini kontrol edin. URL'nin, istemci uygulamasının Firebase Notifications'a kaydolarak aldığı kayıt jetonuyla eşleştiğinden emin olun. Metni kısaltmayın veya ek karakter eklemeyin. |
Kayıtlı Olmayan Cihaz | 200 + hata:Kayıtlı Değil | Mevcut bir kayıt jetonu, aşağıdakiler de dahil olmak üzere çeşitli senaryolarda geçerliliğini yitirebilir:
|
Geçersiz Paket Adı | 200 + hata:GeçersizPackageName | Mesajın, paket adı istekte iletilen değerle eşleşen bir kayıt jetonuna gönderildiğinden emin olun. |
Kimlik Doğrulama Hatası | 401 | Mesaj göndermek için kullanılan gönderen hesabının kimliği doğrulanamadı. Bunun olası nedenleri şunlardır:
|
Eşleşmeyen Gönderen | 200 + error:MismatchSenderId | Kayıt jetonu belirli bir gönderen grubuna bağlıdır. Bir istemci uygulaması FCM için kaydolduğunda, hangi gönderenlerin ileti göndermesine izin verildiğini belirtmelidir. İstemci uygulamasına ileti gönderirken bu gönderen kimliklerinden birini kullanmanız gerekir. Farklı bir gönderene geçerseniz mevcut kayıt jetonları çalışmaz. |
Geçersiz JSON | 400 | JSON mesajının doğru şekilde biçimlendirildiğinden ve geçerli alanlar içerdiğinden emin olun (örneğin, doğru veri türünün iletildiğinden emin olun). |
Geçersiz Parametreler | 400 + error:InvalidParameters | Sağlanan parametrelerin doğru ada ve türe sahip olup olmadığını kontrol edin. |
Mesaj Çok Büyük | 200 + error:MessageTooBig | Bir mesaja eklenen yük verilerinin toplam boyutunun FCM sınırlarını aşmadığından emin olun: çoğu mesaj için 4.096 bayt veya konulara gönderilen mesajlar için 2.048 bayt. Buna hem anahtarlar hem de değerler dahildir. |
Geçersiz Veri Anahtarı | 200 ve üzeri hata:
InvalidDataKey |
Yük verisinin, FCM tarafından dahili olarak kullanılan bir anahtar (from veya gcm gibi veya google ön ekiyle başlayan herhangi bir değer) içermediğinden emin olun. Bazı kelimelerin (collapse_key gibi) FCM tarafından da kullanıldığını ancak yükte kullanılmasına izin verildiğini unutmayın. Bu durumda yük değeri, FCM değeri tarafından geçersiz kılınır. |
Geçersiz Geçerlilik Süresi | 200 + error:InvalidTtl | time_to_live içinde kullanılan değerin, 0 ile 2.419.200 (4 hafta) saniye arasında bir süreyi temsil eden bir tam sayı olduğundan emin olun. |
Zaman aşımı | 5xx veya 200+ hatası: Kullanılamıyor | Sunucu isteği zamanında işleyemedi. Aynı isteği tekrar deneyin ancak şunu yapmanız gerekir:
Sorunlara neden olan gönderenler kara listeye alınabilir. |
Dahili Sunucu Hatası | 500 veya 200 + error:InternalServerError | Sunucu, isteği işlemeye çalışırken bir hatayla karşılaştı. "Tüme zaman aşımı" bölümünde listelenen şartları uygulayarak aynı isteği tekrar deneyebilirsiniz (yukarıdaki satıra bakın). Hata devam ederse lütfen Firebase destek ekibiyle iletişime geçin. |
Cihaz Mesaj Sıklığı Aşıldı | 200 ve üzeri hata:
DeviceMessageRate Exceeded |
Belirli bir cihaza gönderilen mesajların oranı çok yüksek. Bir Apple uygulaması, APNs sınırlarını aşan bir hızda mesaj gönderirse bu hata mesajını alabilir. Bu cihaza gönderilen mesaj sayısını azaltın ve göndermeyi yeniden denemek için eksponansiyel geri yüklemeyi kullanın. |
Topics Mesaj Sıklığı Aşıldı | 200 ve üzeri hata:
TopicsMessageRate Exceeded |
Belirli bir konunun abonelere gönderilen mesajların oranı çok yüksek. Bu konu için gönderilen mesaj sayısını azaltın ve göndermeyi yeniden denemek için eksponansiyel geri yüklemeyi kullanın. |
APNs kimlik bilgileri geçersiz | 200 ve üzeri hata:
InvalidApnsCredential |
Gerekli APN kimlik doğrulama anahtarı yüklenmediği veya süresi dolduğu için Apple cihazı hedefleyen bir mesaj gönderilemedi. Geliştirme ve üretim kimlik bilgilerinizin geçerliliğini kontrol edin. |
Cihaz grubu yönetimi
Aşağıdaki tabloda, cihaz grupları oluşturma ve üye ekleme ya da kaldırmayla ilgili anahtarlar listelenmiştir. Daha fazla bilgi için platformunuza yönelik kılavuzu inceleyin: iOS+ veya Android.
Parametre | Kullanım | Açıklama |
---|---|---|
operation |
Zorunlu, dize | Çalıştırılacak işlem. Geçerli değerler create ,
add ve remove 'dir. |
notification_key_name |
Zorunlu, dize | Oluşturulacak veya değiştirilecek cihaz grubunun kullanıcı tanımlı adı. |
notification_key |
Zorunlu (create işlemi hariç, dize |
Cihaz grubunun benzersiz tanımlayıcısı. Bu değer, başarılı bir create işleminin yanıtında döndürülür ve cihaz grubunda yapılan sonraki tüm işlemler için gereklidir. |
registration_ids |
Zorunlu, dize dizisi | Eklenecek veya kaldırılacak cihaz jetonları. Bir cihaz grubundaki mevcut tüm kayıt jetonlarını kaldırırsanız FCM, cihaz grubunu siler. |