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, bir 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: Konu, "konularda "konunuz"" şeklinde biçimlendirilir. 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'lerin 5 ve 10. önceliklerine 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 olarak gönderilen mesajlar hemen gönderilir ve uygulama bir bildirim gösterebilir. |
|
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. Desteklenen maksimum geçerlilik süresi 4 haftadır ve 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 üzere 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 |
Ana metni kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için uygulamanın dize kaynaklarındaki ana metin 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
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. |
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ı.
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. |
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.
|
sound |
İsteğe bağlı, dize |
Cihaz bildirimi aldığında çalınacak 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. Belirtilirse ve aynı etikete sahip bir bildirim zaten gösteriliyorsa yeni bildirim, bildirim çekmecesinde 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ı başlıklı makaleyi 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 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 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ını) 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 tablo 1'e 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 kelimelerden hiçbirini ( |
Aşağı akış mesaj yanıtını yorumlama
Uygulama sunucusu, FCM adresinden gönderilen ileti yanıtını yorumlamak için hem ileti 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 olup olmadığı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 (ör. sayı beklenen bir yere dize gönderme) gösterir. Başarısızlıkla ilgili kesin neden yanıtta açıklanır ve isteğin yeniden denenebilmesi için sorunun giderilmesi gerekir. |
401 | Gönderen hesabının kimliği doğrulanırken hata oluştu. |
5xx | 500-599 aralığındaki hatalar (ör. 500 veya 503), isteği işlemeye çalışırken FCM arka ucunda dahili bir hata olduğunu veya sunucunun geçici olarak kullanılamadığını (ör. zaman aşımı nedeniyle) gösterir. 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ş mesajların sayısı. |
results |
Zorunlu, 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 olan tüm cihazlara iletmeye çalıştığında konu mesajı kimliği. |
error |
İsteğe bağlı, dize | Mesaj işlenirken oluşan hata. Olası değerleri tablo 9'da bulabilirsiniz. |
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 tablo 9'a bakın. |
Aşağı akış mesajı hata yanıt kodları
Aşağıdaki tabloda, yayın mesajları için hata yanıt kodları listelenmiştir.
Hata | HTTP Kodu | Önerilen işlem |
---|---|---|
Kayıt jetonu eksik | 200 + error:MissingRegistration | İsteğin bir kayıt jetonu (düz metin mesajındaki registration_id alanında veya JSON'daki to ya da registration_ids alanında) içerdiğini kontrol edin. |
Geçersiz Kayıt Jetonu | 200 + error:InvalidRegistration | Sunucuya ilettiğiniz kayıt jetonunun biçimini kontrol edin. Bu jetonun, istemci uygulamasının Firebase Notifications'a kaydolurken aldığı kayıt jetonuyla eşleştiğinden emin olun. Metni kısaltmayın veya ek karakter eklemeyin. |
Kayıtlı Olmayan Cihaz | 200 + error:NotRegistered | Mevcut bir kayıt jetonu, aşağıdakiler de dahil olmak üzere çeşitli senaryolarda geçerliliğini yitirebilir:
|
Geçersiz Paket Adı | 200 + error:InvalidPackageName | İletinin, 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ı. Olası nedenler:
|
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 kaydolurken hangi gönderenlerin ileti 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. |
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 iletiye dahil edilen yük verilerinin toplam boyutunun FCM sınırlarını aşmadığından emin olun: Çoğu ileti için 4096 bayt veya konulara gönderilen iletiler için 2048 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 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 Ekibi ile 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 ileti 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 konuya abone olan kullanıcılara 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. |
Geçersiz APNs kimlik bilgileri | 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, 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. |