Bu dokümanda, uygulama sunucunuz, istemci uygulamaları ve Firebase Cloud Messaging (FCM) arasında mesaj aktarmak için kullanılan XMPP söz dizimi referansı sağlanmaktadır. Uygulama sunucunuz şu uç noktalara bağlanmalıdır:
// Production fcm-xmpp.googleapis.com:5235 // Testing fcm-xmpp.googleapis.com:5236
Kullanılabilir parametreler ve seçenekler şu kategorilere ayrılır:
- Aşağı akış mesajı söz dizimi
- Aşağı akış mesajı hata yanıt kodları
- Yukarı akış mesajı söz dizimi
- FCM kontrol mesajları
Aşağı akış mesajı söz dizimi
Bu bölümde, yayın mesajları gönderme söz dizimi verilmiştir.
Aşağı akış XMPP mesajları (JSON)
Aşağıdaki tabloda, XMPP JSON mesajlarının hedefleri, seçenekleri ve yükü listelenmiştir.
Parametre | Kullanım | Açıklama | |
---|---|---|---|
Hedef | |||
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 ekinde |
|
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: |
|
Seçenekler | |||
message_id |
Zorunlu, dize | Bu parametre, XMPP bağlantısındaki bir mesajı benzersiz şekilde tanımlar. |
|
collapse_key |
İsteğe bağlı, dize | Bu parametre, yayın devam ettirildiğinde yalnızca son ileti gönderilecek şekilde daraltılabilen bir ileti grubunu (ör. Mesajların gönderilme sırası garanti edilmez. 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 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 boyunca (saniye cinsinden) saklanması gerektiğini 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. |
|
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 anahtar/değer çiftlerini belirtir. Örneğin, Apple platformlarında mesaj APN'ler üzerinden teslim ediliyorsa özel veri alanlarını temsil eder. FCM tarafından yayınlanırsa Android'de bu işlem, 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 yayının ö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
İleti 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, Apple platformları 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 |
Gövde metnini kullanıcının mevcut yerelleştirmesine göre yerelleştirmek için kullanılacak
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 kullanılacak, 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ı, dize olarak JSON dizisi |
Başlık metnini 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. |
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, |
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ı, dize olarak JSON dizisi |
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şkilendirilen işlem. Tüm URL değerleri için HTTPS gereklidir. |
Aşağı akış XMPP mesajı yanıtını yorumlama
Aşağıdaki tabloda, aşağı akış XMPP mesaj yanıtında görünen alanlar listelenmektedir.
Parametre | Kullanım | Açıklama |
---|---|---|
from |
Zorunlu, dize | Bu parametre, bu yanıtı kimin gönderdiğini belirtir. Değer, istemci uygulamasının kayıt jetonudur. |
message_id |
Zorunlu, dize | Bu parametre, XMPP bağlantısındaki bir mesajı benzersiz şekilde tanımlar. Değer, ilişkilendirilmiş mesajı benzersiz şekilde tanımlayan bir dizedir. |
message_type |
Zorunlu, dize | Bu parametre, FCM'den uygulama sunucusuna gönderilen bir Değer |
error |
İsteğe bağlı, dize | Bu parametre, yayın mesajıyla ilgili bir hatayı belirtir. Politika, message_type nack olduğunda ayarlanır. Ayrıntılar için tablo 4'e bakın. |
error_description |
İsteğe bağlı, dize | Bu parametre, hatayla ilgili açıklayıcı bilgiler sağlar. message_type nack olduğunda ayarlanır. |
Aşağı akış mesajı hata yanıt kodları
Aşağıdaki tabloda, aşağı akış mesajları için hata yanıtı kodları listelenmektedir.
Hata | XMPP kodu | Önerilen işlem |
---|---|---|
Kayıt jetonu eksik | INVALID_JSON |
İ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 APNs Kaydı | INVALID_JSON |
iOS kayıtları için istemciden gelen kayıt isteğinin geçerli bir APNs jetonu ve uygulama kimliği içerdiğinden emin olun. |
Geçersiz Kayıt Jetonu | BAD_REGISTRATION |
Sunucuya ilettiğiniz kayıt jetonunun biçimini kontrol edin. Bu değerin, istemci uygulamasının FCM'e kaydolurken aldığı kayıt jetonuyla eşleştiğinden emin olun. Metni kısaltmayın veya ek karakter eklemeyin. |
Kayıtlı Olmayan Cihaz | DEVICE_UNREGISTERED |
Mevcut bir kayıt jetonunun geçerliliği, aşağıdakiler gibi çeşitli durumlarda sona erebilir:
|
Gönderen Eşleşmiyor | SENDER_ID_MISMATCH |
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 | INVALID_JSON |
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). |
Mesaj çok büyük | INVALID_JSON |
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, konulara gönderilen mesajlar için ise 2.048 bayt. Buna hem anahtarlar hem de değerler dahildir. |
Geçersiz Veri Anahtarı | INVALID_JSON |
Yük verisinin, FCM tarafından dahili olarak kullanılan bir anahtar (from , gcm veya google ön ekiyle başlayan herhangi bir değer gibi) 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 | INVALID_JSON |
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. |
Hatalı ACK mesajı | BAD_ACK |
Tekrar denemeden önce ack mesajının doğru biçimlendirildiğinden emin olun. Ayrıntılar için tablo 6'ya bakın. |
Zaman aşımı | SERVICE_UNAVAILABLE |
Sunucu isteği zamanında işleyemedi. Aynı isteği yeniden deneyin, ancak şunları yapmanız gerekir:
Not: Soruna neden olan gönderenler kara listeye alınma riskiyle karşı karşıyadır. |
Dahili Sunucu Hatası | INTERNAL_SERVER_
|
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). |
Cihaz İletisi Hızı Aşıldı | DEVICE_MESSAGE_RATE |
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. |
Topics Mesaj Sıklığı Aşıldı | TOPICS_MESSAGE_RATE |
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 hemen tekrar denemeyin. |
Bağlantı Boşaltılıyor | CONNECTION_DRAINING |
Bağlantı zayıf olduğu için mesaj işlenemedi. Bunun nedeni, yük dengeleme işlemi için FCM ürününün düzenli olarak bir bağlantıyı kapatması gerekmesidir. Mesajı başka bir XMPP bağlantısı üzerinden tekrar deneyin. |
Geçersiz APNs Kimlik Bilgileri | INVALID_APNS_CREDENTIAL |
Gerekli APNs kimlik doğrulama anahtarı yüklenmediği veya süresi dolduğu için iOS cihazı hedefleyen bir mesaj gönderilemedi. Geliştirme ve üretim kimlik bilgilerinizin geçerliliğini kontrol edin. |
Kimlik doğrulama başarısız oldu | AUTHENTICATION_FAILED |
Harici push hizmetleriyle kimlik doğrulama yapılamadı. Doğru web push sertifikalarını kullanıp kullanmadığınızı kontrol edin. |
Yukarı akış mesajı söz dizimi
Yukarı akış mesajı, istemci uygulamasının uygulama sunucusuna gönderdiği bir mesajdır. Şu anda yalnızca XMPP yayın mesajlarını desteklemektedir. İstemci uygulamalarından mesaj gönderme hakkında daha fazla bilgi için platformunuzun belgelerine bakın.
Yukarı akış XMPP mesajını yorumlama
Aşağıdaki tabloda, istemci uygulamalarından gelen yukarı akış mesaj isteklerine yanıt olarak FCM tarafından oluşturulan XMPP dizelerindeki alanlar açıklanmaktadır.
Parametre | Kullanım | Açıklama |
---|---|---|
from |
Zorunlu, dize | Bu parametre, iletiyi kimin gönderdiğini belirtir. Değer, istemci uygulamasının kayıt jetonudur. |
category |
Zorunlu, dize | Bu parametre, mesajı gönderen istemci uygulamasının uygulama paketi adını belirtir. |
message_id |
Zorunlu, dize | Bu parametre iletinin benzersiz kimliğini belirtir. |
data |
İsteğe bağlı, dize | Bu parametre, mesajın yükü için anahtar/değer çiftlerini belirtir. |
ACK mesajı gönderme
Aşağıdaki tabloda, uygulama sunucusunun aldığı bir yayın mesajına yanıt olarak FCM adresine göndermesi beklenen ACK yanıtı açıklanmaktadır.
Parametre | Kullanım | Açıklama |
---|---|---|
to |
Zorunlu, dize | Bu parametre, yanıt mesajının alıcısını belirtir. Değer, yayın mesajını gönderen istemci uygulamasının kayıt jetonu olmalıdır. |
message_id |
Zorunlu, dize | Bu parametre, yanıtın hangi mesaj için gönderildiğini belirtir. Değer, ilgili yayın öncesi mesajdaki message_id değeri olmalıdır. |
message_type |
Zorunlu, dize | Bu parametre, bir uygulama sunucusundan CCS'ye gönderilen bir ack mesajını belirtir.
Yayınlanan mesajlar için her zaman ack olarak ayarlanmalıdır. |
FCM sunucu mesajları (XMPP)
Bu, FCM'ten bir uygulama sunucusuna gönderilen bir iletidir. FCM tarafından uygulama sunucusuna gönderilen başlıca mesaj türleri şunlardır:
- Denetleme: CCS tarafından oluşturulan bu mesajlar, uygulama sunucusunun işlem yapması gerektiğini gösterir.
Aşağıdaki tabloda, CCS'nin bir uygulama sunucusuna gönderdiği mesajlara dahil edilen alanlar açıklanmaktadır.
Parametre | Kullanım | Açıklama |
---|---|---|
Ortak alan | ||
message_type |
Zorunlu, dize | Bu parametre, mesajın türünü belirtir: kontrol.
|
control_type |
İsteğe bağlı, dize | Bu parametre, FCM adresinden gönderilen kontrol mesajının türünü belirtir. Şu anda yalnızca |