FCM mesajları hakkında

Firebase Cloud Messaging (FCM), çok çeşitli mesajlaşma seçenekleri ve özellikleri sunar. Bu sayfada yer alan bilgiler, farklı FCM mesaj türlerini ve bunlarla neler yapabileceğinizi anlamanıza yardımcı olmayı amaçlamaktadır.

Mesaj türleri

FCM ile istemcilere iki tür ileti gönderebilirsiniz:

  • Bazen "görüntüleme mesajları" olarak da adlandırılan bildirim mesajları. Bunlar FCM SDK'sı tarafından otomatik olarak yönetilir.
  • İstemci uygulaması tarafından işlenen veri mesajları.

Bildirim mesajları, kullanıcı tarafından görülebilen önceden tanımlanmış bir anahtar grubu içerir. Veri mesajları ise yalnızca kullanıcı tanımlı özel anahtar/değer çiftlerinizi içerir. Bildirim mesajları isteğe bağlı bir veri yükü içerebilir. Firebase konsolundan mesaj gönderirken (1.000 karakter sınırı uygulanır) hariç olmak üzere, her iki mesaj türü için maksimum yük 4.096 bayttır.

Kullanım senaryosu Nasıl gönderilir?
Bildirim mesajı FCM SDK, arka planda çalışırken istemci uygulaması adına mesajı son kullanıcı cihazlarında gösterir. Aksi takdirde, bildirim alındığında uygulama ön planda çalışıyorsa davranışı uygulamanın kodu belirler. Bildirim mesajlarında, kullanıcı tarafından görülebilen önceden tanımlanmış bir anahtar grubu ve isteğe bağlı olarak özel anahtar/değer çiftlerinden oluşan bir veri yükü bulunur.
  1. Cloud Functions gibi güvenilir bir ortamda veya uygulama sunucunuzda Admin SDK'sı veya HTTP v1 API. notification anahtarını ayarlayın. İsteğe bağlı veri yükü olabilir. Her zaman daraltılabilir.

    Bazılarına göz atın istek yükü gönderme ve istek yükü gönderme hakkında daha fazla bilgi edinin.

  2. Şunu kullanın: Bildirim oluşturucu: İleti metnini, başlığını vb. girin ve gönderin. Özel veriler sağlayarak isteğe bağlı veri yükü ekleyin.
Veri mesajı Veri mesajlarını işlemekten istemci uygulaması sorumludur. Veri mesajları yalnızca ayrılmış anahtar adları olmayan özel anahtar/değer çiftlerine sahiptir (aşağıya bakın). gibi güvenilir bir ortamda Cloud Functions veya uygulama sunucunuzda Admin SDK'sı veya FCM Sunucu Protokolleri. İsteği gönderirken data anahtarını ayarlayın.

Uygulamanız arka planda çalışırken FCM SDK'sının bildirim görüntülemeyi otomatik olarak yapmasını istediğinizde bildirim mesajlarını kullanın. Sizinle ilişkili verileri işlemek istediğinizde veri mesajlarını kullanın. kodu oluşturabilirsiniz.

FCM, isteğe bağlı veriler içeren bir bildirim mesajı gönderebilir yük. Bu tür durumlarda, bildirimi görüntüleme işlemi FCM tarafından işlenir. ve istemci uygulaması veri yükünü üstlenir.

Bildirim mesajları

Test için veya pazarlama ve kullanıcı yeniden etkileşimi için Firebase konsolunu kullanarak bildirim mesajları gönderebilirsiniz. Firebase konsolu, pazarlama mesajlarını hassaslaştırmanıza ve iyileştirmenize yardımcı olmak için analiz tabanlı A/B testi sağlar.

Admin SDK veya FCM protokolleri için notification anahtarını kullanıcı tarafından görülebilen reklam öğeleri için önceden tanımlanmış gerekli anahtar/değer bildirim mesajının bir kısmını oluşturur. Örneğin, bir mesajlaşma uygulamasında JSON biçiminde bir bildirim mesajı verilmiştir. Kullanıcı, cihazda "Portekiz - Danimarka" başlıklı ve "mükemmel maç" metnini içeren bir mesaj görebilir:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Uygulama gerçekleştirildiğinde bildirim mesajları bildirim tepsisine teslim edilir. arka planda. Ön plandaki uygulamalarda mesajlar bir geri çağırma işlevi tarafından işlenir.

Bildirim mesajları oluşturmak için kullanılabilen önceden tanımlanmış anahtarların tam listesi için HTTP v1 Protokolü bildirim nesnesi referans dokümanlarına bakın.

Veri mesajları

İstemci uygulamasına veri yükü göndermek için özel anahtar/değer çiftlerinizle uygun anahtarı ayarlayın.

Örneğin burada Yukarıdakiyle aynı IM uygulamasında JSON biçimli mesaj, Burada bilgiler, ortak data anahtarında bulunur ve istemci uygulamanın içeriği yorumlaması beklenir:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Yukarıdaki örnekte, üst düzey veya ortak data alanının kullanımı gösterilmektedir. Bu alan, iletiyi alan tüm platformlardaki istemciler tarafından yorumlanır. Her platformda istemci uygulaması, veri yükünü bir geri çağırma işlevinde alır.

Veri mesajları için şifreleme

Android Taşıma Katmanı (FCM mimarisine bakın) noktadan noktaya şifreleme kullanılır. Size Bu nedenle, veri mesajlarına uçtan uca şifreleme eklemeye karar verebilirsiniz. FCM uçtan uca bir çözüm sunmuyor. Ancak kılcal veya DTLS gibi harici çözümler de mevcuttur.

İsteğe bağlı veri yükü içeren bildirim mesajları

Hem programatik olarak hem de Firebase konsolu üzerinden bildirim gönderebilirsiniz İsteğe bağlı özel anahtar/değer çiftleri yükü içeren mesajlar Bildirim derleyicisinde Gelişmiş seçenekler bölümündeki Özel veriler alanlarını kullanın.

Hem bildirim hem de veri içeren mesajlar alındığında uygulama davranışı uygulamanın arka planda mı yoksa arka planda mı olduğuna esasen, işlem yapılırken o zamanda etkin olup olmadığı makbuz.

  • arka planda işlem yapıldığında, uygulamalar bildirim yükünü bildirim tepsisini açın ve veri yükünü yalnızca kullanıcı bildirime dokunduğunda.
  • Ön plandayken uygulamanız, her iki yükün de bulunduğu bir mesaj nesnesi alır.

Burada, hem notification tuşu ve data anahtarı:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Mesajları platformlar arasında özelleştirme

Hem Firebase Admin SDK hem de FCM v1 HTTP protokolü mesajınıza izin verir. tüm alanları otomatik olarak ayarlayıp message nesnesini tanımlayın. Bunlardan bazıları:

  • Mesajın alındığı tüm uygulama örnekleri tarafından yorumlanacak ortak bir alan grubu.
  • platforma özgü alan grupları (ör. AndroidConfig ve WebpushConfig), yalnızca belirtilen platformda çalışan uygulama örnekleri tarafından yorumlanır.

Platforma özel engeller, mesajların alındığında doğru şekilde ele alınmasını sağlamak için farklı platformlar için özelleştirme esnekliği sunar. İlgili içeriği oluşturmak için kullanılan FCM arka ucu, belirtilen tüm parametreleri dikkate alır ve mesajı görebilirsiniz.

Ortak alanlar ne zaman kullanılır?

Aşağıdaki durumlarda ortak alanları kullanın:

  • Tüm platformlarda (Apple, Android ve web) uygulama örneklerini hedefleme
  • Konulara mesaj gönderme

Platformdan bağımsız olarak tüm uygulama örnekleri aşağıdaki ortak alanları yorumlayabilir:

Platforma özgü alanlar ne zaman kullanılır?

Aşağıdaki işlemleri yapmak istiyorsanız platforma özgü alanları kullanın:

  • Alanları yalnızca belirli platformlara gönderme
  • Ortak alanlara ek olarak platforma özgü alanları gönderme

Değerleri yalnızca belirli platformlara göndermek istediğinizde aşağıdakini kullanmayın: ortak alanlar; kullanın. Örneğin, bir bildirim göndermek için yalnızca Apple platformları ve web için değil, Android için değil, iki ayrı biri Apple, diğeri web için.

Belirli özel amaçlı iletiler gönderirken teslim seçeneklerini inceleyin, ayarlamak için platforma özgü alanları kullanın. Şu durumlarda her platform için farklı değerler belirtebilirsiniz: istediğiniz zaman kapatabilirsiniz. Ancak platformlar arasında temelde aynı değeri ayarlamak istediğinizde bile platforma özgü alanları kullanmanız gerekir. Bunun nedeni, her platformun değeri biraz farklı şekilde yorumlayabilmesidir. Örneğin, Android'de ömrü sona erme süresi saniye cinsinden son kullanma süresi olarak ayarlanırken Apple'da son kullanma tarihi olarak ayarlanır.

Örnek: Platforma özel yayınlama seçenekleri içeren bildirim mesajı

Aşağıdaki v1 gönderme isteği, genel bir bildirim başlığı gönderir ve ancak platforma özel bazı geçersiz kılmalar da gönderir. Özellikle, istek:

  • Android ve web platformları için uzun bir geçerlilik süresi ayarlarken APN'ler (Apple platformları) mesaj önceliğini düşük bir ayara ayarlar.
  • kullanıcının Android ve Apple'da bildirime dokunmasının sonucunu tanımlamak için uygun anahtarları ayarlar (sırasıyla click_action ve category).
{
  "message":{
     "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
     "notification":{
       "title":"Match update",
       "body":"Arsenal goal in added time, score is now 3-0"
     },
     "android":{
       "ttl":"86400s",
       "notification"{
         "click_action":"OPEN_ACTIVITY_1"
       }
     },
     "apns": {
       "headers": {
         "apns-priority": "5",
       },
       "payload": {
         "aps": {
           "category": "NEW_MESSAGE_CATEGORY"
         }
       }
     },
     "webpush":{
       "headers":{
         "TTL":"86400"
       }
     }
   }
 }

HTTP v1 referans belgelerini inceleyin ayrıntılı bilgi için bkz. E-posta mesajında platforma özel engellemeler. İleti gövdesini içeren gönderme istekleri oluşturma hakkında daha fazla bilgi için Gönderme İstekleri Oluşturma başlıklı makaleyi inceleyin.

Teslimat seçenekleri

FCM, adresine gönderilen iletiler için belirli teslim seçenekleri sunar. mobil cihazlarda ve mobil cihazlarda benzer seçeneklere Apple platformları ve web. Örneğin, "daraltılabilir" mesaj davranışı Android'de FCM'nin collapse_key özelliği, Apple'da apns-collapse-id özelliği ve JavaScript/Web'de Topic özelliği aracılığıyla desteklenir. Ayrıntılar için bkz. bu bölümdeki açıklamalar ve ilgili referans belgelere yer verin.

Daraltılamayan ve daraltılabilir mesajlar

Daraltılamayan bir ileti, her bir iletinin cihaza teslim edildiğini gösterir. Daraltılamayan bir mesaj, işinize yarayacak içeriksiz "ping" gibi daraltılabilir bir mesajın aksine - mobil uygulamayı kullanarak sunucuyla iletişim kurun.

Daraltılamayan mesajların genel kullanım alanlarından bazıları sohbet mesajları veya kritik öneme sahip mesajlardır. Örneğin bir IM uygulamasında her iletiyi teslim etmek istersiniz çünkü her iletinin içeriği farklı olur.

Android için, daraltılmaksızın depolanabilecek mesaj sayısı sınırı 100'dür. Sınıra ulaşılırsa depolanan tüm mesajlar silinir. Cihaz geri döndüğünde ise, sınıra ulaşıldığını belirten özel bir mesaj alır. Uygulama, genellikle uygulama sunucusundan tam senkronizasyon isteğinde bulunarak durumu düzgün bir şekilde ele alabilir.

Daraltılabilir mesaj, Bu, cihaza teslim edilmemişse yeni bir mesaj anlamına gelir.

Daraltılabilir mesajların yaygın kullanım alanlarından biri, bir iletiyi sunucudaki verileri senkronize etmek için bir mobil uygulama. Buna örnek olarak kullanıcıları en son skorla güncelleyen bir spor uygulaması verilebilir. Yalnızca en son mesaj alakalıdır.

Android'de bir mesajı daraltılabilir olarak işaretlemek için collapse_key parametresi gösterir. Varsayılan olarak, daraltma anahtarı uygulama paketinin adıdır. Firebase konsolunda kayıtlı. FCM sunucusu şunları yapabilir: Her biri için aynı anda dört farklı daraltılabilir mesaj her biri farklı bir daraltma anahtarına sahip. Bu sayıyı aşarsanız FCM yalnızca şu verileri tutar: Hangi anahtarların tutulacağı konusunda herhangi bir garanti verilmeden, dört daraltma anahtarı.

Yük içermeyen konu iletileri varsayılan olarak daraltılabilir. Bildirim mesajları her zaman daraltılabilir ve collapse_key parametresi yoksayılır.

Hangisini kullanmalıyım?

Uygulamanızın daraltılamayan mesajlar kullanması gerekmediği sürece, daraltılabilir mesajlar performans açısından daha iyi bir seçimdir. Ancak, daraltılabilir mesajlar kullanıyorsanız FCM en fazla dört farklı daraltma anahtarının kullanılmasına izin verir /FCM istediğiniz zaman değiştirebilirsiniz. Bu sayıyı aşmamanız gerekir. Aksi takdirde, beklenmedik sonuçlarla karşılaşabilirsiniz.

Kullanım senaryosu Gönderme
Katlanamazlar Her mesaj istemci uygulaması için önemlidir ve gönderilmesi gerekir. Bildirim mesajları hariç tüm iletiler varsayılan olarak daraltılamaz.
Katlanabilir Daha eski, ilgili bir mesajı oluşturan daha yeni bir mesaj olduğunda FCM, istemci uygulamasıyla alakasız olduğunda eski mesajın yerini alır. Örnek: sunucudan bir veri senkronizasyonu başlatmak için kullanılan veya güncel olmayan iletiler bildirim mesajları. Mesaj isteğinizde uygun parametreyi ayarlayın:
  • Android'de collapseKey
  • Apple'da apns-collapse-id
  • Web'de Topic
  • Eski protokollerde collapse_key (tüm platformlar)

İletinin önceliğini ayarlama

Aşağı akış iletilerine teslim önceliği atamak için iki seçeneğiniz vardır: normal ve yüksek öncelikli. Davranış platformlar arasında biraz farklılık gösterse de normal ve yüksek öncelikli iletilerin yayını şu şekilde gerçekleşir:

  • Normal öncelikli. Normal öncelikli mesajlar, uygulama ön plandayken hemen gönderilir. Arka planda çalışan uygulamalarda teslimat gecikebilir. Yeni e-posta bildirimleri, kullanıcı arayüzünüzün senkronize kalması veya uygulama verilerinin arka planda senkronize edilmesi gibi zamana duyarlı olmayan mesajlar için normal teslimat önceliğini seçin.

  • Yüksek öncelikli. FCM, yüksek öncelikli teslim etmeye çalışır Mesaj anında gönderilir. Yüksek öncelikli mesajlar, zamana duyarlı, kullanıcı tarafından görülebilen içerik içindir.

FCM aracılığıyla gönderilen normal öncelikli mesaj örneği. Bir dergiyi bilgilendirmek için kullanılan HTTP v1 protokolü abone olan kullanıcılar:

{
  "message":{
    "topic":"subscriber-updates",
    "notification":{
      "body" : "This week's edition is now available.",
      "title" : "NewsMagazine.com",
    },
    "data" : {
      "volume" : "3.21.15",
      "contents" : "http://www.news-magazine.com/world-week/21659772"
    },
    "android":{
      "priority":"normal"
    },
    "apns":{
      "headers":{
        "apns-priority":"5"
      }
    },
    "webpush": {
      "headers": {
        "Urgency": "high"
      }
    }
  }
}

Mesaj önceliğini ayarlamayla ilgili platforma özel daha fazla bilgi için:

Yaşamdaki önemli kullanım alanları

FCM API'leri, acil durum uyarıları veya API'lerin kullanımının ya da arıza yapmasının ölüm, yaralanma veya çevresel zarara neden olabileceği diğer yüksek riskli etkinlikler (nükleer tesislerin işletilmesi, hava trafik kontrolü veya yaşam destek sistemleri gibi) için tasarlanmamıştır. Bu tür kullanımların tümü Bölüm 4. a. 7'de belirtilen şekilde yasal işlem başlatma hakkına sahiptir. Verilerinizin yönetiminden yalnızca ve ayrıca ihlal eder. Google, API'leri "olduğu gibi" sağlar ve size veya kullanıcılarınıza karşı herhangi bir yükümlülük veya başka bir sorumluluk üstlenmeden, API'leri ya da herhangi bir bölümünü veya özelliğini ya da bunlara erişiminizi herhangi bir nedenle ve herhangi bir zamanda kullanımdan kaldırma hakkını saklı tutar.

Bir mesajın geçerlilik süresini ayarlama

FCM genellikle iletileri gönderildikten hemen sonra teslim eder. Ancak bu her zaman mümkün olmayabilir. Örneğin, platform Android ise bu cihaz kapalı, çevrimdışı veya kullanılamıyor olabilir. FCM, bir uygulamanın aşırı kaynak tüketmesini ve pil ömrünü olumsuz yönde etkilemesini önlemek için iletileri kasıtlı olarak geciktirebilir.

Bu durumda FCM, mesajı depolar ve en kısa sürede teslim eder. yapmanız gerektiğini unutmayın. Bu çoğu durumda iyi olsa da her ne kadar Bu da geç gönderilen iletilerin asla teslim edilmemesi anlamına gelebilir. Örneğin, mesaj bir gelen arama veya görüntülü sohbet bildirimiyse yalnızca arama sonlandırılmadan önceki kısa bir süre boyunca anlamlı olur. Ya da ileti Etkinliğe davetiye göndermek, etkinlik sona erdikten sonra alındıysa bir işe yaramaz.

Android ve Web/JavaScript'te, bir JavaScript'in maksimum ömrünü mesajını alırsınız. Değer, 0 ile 2.419.200 saniye (28 saniye) arasında bir süre olmalıdır. gün) ve FCM olan maksimum süreye karşılık gelir. mesajı iletmeye çalışır. Bunu içermeyen istekler alanının varsayılan değeri en fazla dört haftadır.

Bu özelliğin bazı olası kullanımları şunlardır:

  • Görüntülü sohbet gelen aramaları
  • Süresi dolan davet etkinlikleri
  • Takvim etkinlikleri

Bir mesajın ömrünü belirtmenin bir başka avantajı da, FCM'ün, ömrü 0 saniye olan mesajlara daraltılabilir mesaj azaltma işlemi uygulamamasıdır. FCM, olması gereken iletilerin en iyi şekilde işlenmesini sağlar. teslim etme konusunda bilgilendirilmesi gerekir. Hedeflerinize göre time_to_live değeri 0, hemen teslim edilemeyen iletilerin silineceği anlamına gelir. Ancak bu tür mesajlar hiçbir zaman depolanmadığından, bildirim mesajları göndermek için en iyi gecikmeyi sağlar.

Aşağıda, TTL içeren bir istek örneği verilmiştir:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

Mesajın kullanım ömrü

Bir uygulama sunucusu FCM adresine mesaj gönderip bir mesaj kimliği aldığında, mesajın cihaza zaten teslim edildiği anlamına gelmez. Bunun yerine, teslimat için kabul edildiği anlamına gelir. Kabul edildikten sonra mesajın ne olacağı birçok faktöre bağlıdır.

En iyi senaryoda, cihaz FCM'e bağlıysa, ekran açıksa ve akış kısıtlaması yoksa mesaj hemen gönderilir.

Cihaz bağlı ancak Doz modundaysa düşük öncelikli mesaj depolanır Cihaz Doz'dan çıkana kadar FCM tarihine kadar. Ve collapse_key işareti burada rol oynar: Aynı daraltma anahtarının (ve kayıt jetonunun) depolandığı bir ileti zaten ve yerine eski ileti silinir ve yeni ileti yer alır (yani eski ileti, yeni ileti tarafından daraltılır). Ancak, daraltma anahtarı ayarlanmazsa hem yeni hem de eski mesajlar gelecekte yayınlanmak üzere depolanır.

Cihaz FCM adlı cihaza bağlı değilse mesaj şu zamana kadar saklanır: bağlantı kurulduğunda (yine de daraltma anahtarı kurallarına uyulur). Bağlantı kurulduktan sonra FCM, bekleyen tüm mesajları cihaza gönderir. Cihaz tekrar bağlanmazsa (örneğin, fabrika ayarlarına sıfırlandıysa) zaman aşımı nedeniyle mesaj silinir ve FCM depolama alanından kaldırılır. Varsayılan zaman aşımı süresi dört haftadır. time_to_live işareti ayarlanmaz.

Bir iletinin teslimiyle ilgili daha fazla bilgi edinmek için:

    Android veya Apple platformlarında mesaj teslimi hakkında daha fazla bilgi edinmek için şu sayfaya göz atın: FCM raporlama kontrol paneli, Apple ve Android cihazlarda gönderilen ve açılan iletilerin sayısı "gösterimler" için veriler (kullanıcılar tarafından görülen bildirimler).

Doğrudan kanal mesajlaşma özelliğinin etkin olduğu Android cihazlarda, cihaz bir aydan uzun süredir FCM'e bağlanmamışsa FCM mesajı kabul eder ancak hemen siler. Öğe gönderdiğiniz son veri mesajından sonraki dört hafta içinde bağlanırsa müşteriniz onSilinenMessages() geri çağırmasını alır. Uygulama, genellikle uygulama sunucusundan tam senkronizasyon isteğinde bulunarak durumu düzgün bir şekilde ele alabilir.

Son olarak, FCM cihaza bir mesaj teslim etmeyi denediğinde ve Uygulama kaldırıldı. FCM bu mesajı hemen siler ve kayıt jetonunu geçersiz kılar. Bu cihaza mesaj gönderme denemeleri NotRegistered hatasıyla sonuçlanır.

Kısıtlama ve kotalar

Hedefimiz, FCM üzerinden gönderilen her mesajı her zaman teslim etmektir. Ancak her mesajın gönderilmesi bazen genel kullanıcı deneyiminin kötü olmasına neden olur. Diğer durumlarda, FCM'nin uygun şekilde sunduğundan emin olmak için bir hizmet sunmaya çalışıyoruz. Şu bölümde açıklanan sınır ve kota türleri: bu bölüm, bu önemli faktörleri dengelememize yardımcı olacaktır.

Aşağı akış mesajı sınırlama

HTTP v1 API, yayın mesajları için proje başına dakika başına kotalar kullanıma sundu. Dakikada 600 bin iletilik varsayılan kota, iletilerin% 99'undan fazlasını FCM geliştiricilerinin yanı sıra sistemin kararlılığını ve en aza indirildiğini öğrendiniz.

Ani trafik artışları, kota aşıldı hatalarına neden olabilir. Kota aşımı senaryosuna göre sistem, kota bir sonraki dakika doldurulana kadar HTTP durum kodu 429'u (QUOTA_EXCEEDED) sunar. 429 yanıtları, aşırı yüklenme durumlarında da döndürülebilir. Bu nedenle, 429'ları yayınlanan önerilere göre ele almanız önemle tavsiye edilir.

Unutmayın:

  • Aşağı akış kotası, istekleri değil mesajları ölçer.
  • İstemci hataları (HTTP durum kodu 400-499) sayılır (429'lar hariç).
  • Kotalar dakika başınadır, ancak bu dakikalar saate göre belirlenmez.

İzleme kotası

Kotayı, kullanımı ve hataları Google Cloud Console'da görüntüleyebilirsiniz:

  1. Google Cloud konsoluna gidin
  2. API'ler ve hizmetler'i seçin.
  3. Tablo listesinden Firebase Cloud Messaging API'yi seçin.
  4. KOTA VE SİSTEM SINIRLARI'nı seçin.

NOT: Bu grafikler, kota dakikalarıyla tam olarak uyumlu değildir. Bu, Trafik, kotanın altında gibi göründüğünde 429'lar yayınlanabilir.

Kota artışı isteme

Kota artışı istemeden önce aşağıdakilerden emin olun:

  • Kullanımınız, kesintisiz olarak en az 5 dakika boyunca kotanın en az% 80'i kadar olmalıdır elde eder.
  • < %5 istemci hatası oranı, özellikle trafiğin yoğun olduğu zamanlarda
  • Geniş ölçekte ileti göndermeyle ilgili en iyi uygulamaları takip ediyorsunuz.

Bu ölçütleri karşılıyorsanız maksimum günlük kullanım için kota artışı isteği gönderebilirsiniz. +% 25 ve FCM, isteği yerine getirmek için mümkün olan her türlü çabayı gösterecektir. (artış garanti edilmez).

Yaklaşan bir lansman nedeniyle daha fazla aşağı akış mesajlaşma kotasına ihtiyaç duyarsanız veya geçici bir etkinlik varsa kotanızı bu etkinlikten en az 15 gün önce isteyin yeterli süre tanıyın. Büyük istekler (dakikada 18 milyondan fazla mesaj) için en az 30 gün önceden bildirimde bulunulması gerekir. Lansman ve özel etkinlik istekleri, istemci hata oranı ve en iyi uygulamalar koşullarına tabi olmaya devam eder.

FCM kotalarıyla ilgili SSS'ye de göz atın.

Konu mesajı sınırı

Konu aboneliği ekleme/kaldırma hızı, proje başına 3.000 QPS ile sınırlıdır.

İleti gönderme hızları için Dağıtım Düzenleme başlıklı makaleyi inceleyin.

Fanout kısıtlaması

İleti yayma, birden çok cihaza ileti gönderme işlemidir; örneğin, konuları ve grupları seçtiğinizde veya Bildirim oluşturucu hedef kitle veya kullanıcı segmentlerini seçin.

Mesaj dağılmaları anlık olmaz. Bu nedenle, bazen eş zamanlı olarak devam eden yayılma sayısı. Proje başına eşzamanlı mesaj dağıtım sayısını 1.000 ile sınırlandırırız. Sonrasında, ek dağılmayı reddedebiliriz. veya bu isteklerin bir kısmı halihazırda mevcut olana kadar ilerleme dağılmaları tamamlandı.

Gerçekleştirilebilen gerçek dağılım oranı, aynı anda dağılım isteğinde bulunan projelerin sayısından etkilenir. Bir için 10.000 QPS'lik bir yayılma oranı sık görülmez olsa da bu sayı bir garanti değildir ve toplam yükün bir sonucu olduğunu unutmayın. Mevcut dağıtım kapasitesinin, dağıtım istekleri arasında değil, projeler arasında bölündüğünü unutmayın. Dolayısıyla, projenizde devam eden iki dağıtım varsa her dağıtım, mevcut dağıtım oranının yalnızca yarısını görür. Yayma hızınızı en üst düzeye çıkarmanın önerilen yolu, aynı anda yalnızca bir etkin yayına sahip olmaktır.

Daraltılabilir mesaj kısıtlama

Yukarıda açıklandığı gibi, daraltılabilir mesajlar, birbirinin üzerine daraltılmak üzere tasarlanmış içeriksiz bildirimlerdir. Bir geliştiricinin bir uygulamada aynı mesajı çok sık tekrarlaması durumunda, kullanıcının pili üzerindeki etkiyi azaltmak için mesajları geciktirir (düzenleriz).

Örneğin, tek bir e-posta adresine çok sayıda yeni e-posta senkronizasyonu isteği gönderirseniz bir sonraki e-posta senkronizasyon isteğini birkaç dakika geciktirebiliriz. çok daha düşük bir ortalama oranla senkronize edilebiliyor. Bu kısıtlama yalnızca kullanıcının yaşadığı pil etkisini sınırlandırır.

Kullanım alanınız yüksek seri çekim gönderme kalıpları gerektiriyorsa daraltılamayan mesajlar doğru seçim olur. Bu tür mesajlarda, pil maliyetini azaltmak için içeriği bu mesajlara eklediğinizden emin olun.

Katlanabilir mesajlar, cihaz başına uygulama başına 20 mesajlık bir paketle sınırlıdır ve 3 dakikada bir 1 mesajlık bir paket daha eklenir.

XMPP sunucusu kısıtlama

FCM XMPP sunucularına bağlanabileceğiniz hızı 400 bağlantıyla sınırlandırıyoruz. ne kadar büyüyeceğini öğreneceksiniz. Bu, ileti teslimiyle ilgili bir sorun olmasa da sistemin kararlılığını sağlamak açısından önemlidir. Her proje için FCM, paralel olarak 2.500 bağlantıya izin verir.

XMPP ile yayın mesajı için FCM, yayın hedef sunucularının aşırı yüklenmesini önlemek amacıyla yayın mesajlarını proje başına dakikada 1.500.000 ile sınırlandırır.

Pile karşı koruma sağlamak için cihaz başına yukarı akış mesajlarını 1.000/dakika ile sınırlandırıyoruz zorlanır.

Tek bir cihaza gönderilen maksimum mesaj hızı

Android için tek bir cihaza dakikada 240 ve saatte 5.000 mesaj gönderebilirsiniz. Bu yüksek eşiğin amacı, kısa süreli trafik patlamalarına izin vermektir. örneğin kullanıcıların sohbet üzerinden hızlı bir şekilde etkileşim kurduğu zamanlar buna örnek gösterilebilir. Bu sınır, hataların önüne geçer bir cihazdaki pilin yanlışlıkla boşalmasının mantığını da içerir.

iOS'ta, hız APNs sınırlarını aştığında hata döndürür.

FCM bağlantı noktaları ve güvenlik duvarınız

Kuruluşunuzda internete gelen veya internetten giden trafiği kısıtlayan bir güvenlik duvarı varsa ağınızdaki cihazların mesaj alabilmesi için mobil cihazların FCM'e bağlanmasına izin verecek şekilde yapılandırmanız gerekir. FCM genellikle 5228 numaralı bağlantı noktasını kullanır ancak bazen 443, 5229 ve 5230 numaralı bağlantı noktalarını da kullanır.

FCM, ağınıza bağlanan cihazlar için şunları sağlamaz: çünkü IP aralığımız çok sık değiştiğinden ve güvenlik duvarı kurallarınız bu program güncelliğini yitirebilir ve kullanıcılarınızın sunmaktır. İdeal olarak bağlantı noktaları 5228-5230 ve 443 hatasız. Ancak, bir IP adresine sahip olmanız gerekiyorsa kısıtlaması varsa goog.json dosyasında listelenen tüm IP adreslerini izin verilenler listesine eklemeniz gerekir. Bu büyük liste düzenli olarak güncellenir ve kurallarınızı aylık olarak güncellemeniz önerilir. Sorunun neden olduğu sorunlar Güvenlik duvarı IP kısıtlamaları genellikle aralıklıdır ve teşhis edilmesi zordur.

IP yerine izin verilenler listesine eklenebilecek bir dizi alan adı sunuyoruz. adres. Bu ana makine adları aşağıda listelenmiştir. Ek bilgiler kullanmaya başlarsak ana makine adı için, buradaki listeyi güncelleyeceğiz. Güvenlik duvarı kuralınız için alan adlarının kullanılması, güvenlik duvarı cihazınızda işe yarayabilir veya yaramayabilir.

Açılacak TCP bağlantı noktaları:

  • 5228
  • 5229
  • 5230
  • 443

Açılacak ana makine adları:

  • mtalk.google.com
  • mtalk4.google.com
  • mtalk-staging.google.com
  • mtalk-dev.google.com
  • alt1-mtalk.google.com
  • alt2-mtalk.google.com
  • alt3-mtalk.google.com
  • alt4-mtalk.google.com
  • alt5-mtalk.google.com
  • alt6-mtalk.google.com
  • alt7-mtalk.google.com
  • alt8-mtalk.google.com
  • android.apis.google.com
  • device-provisioning.googleapis.com
  • firebaseinstallations.googleapis.com

Ağ Adresi Çevrimi ve/veya Durum Bilgili Paket Denetimi güvenlik duvarları:

Ağınızda Ağ Adresi Dönüşümü (NAT) veya Durum Tabanlı Paket İncelemesi (SPI) uygulanıyorsa 5228-5230 bağlantı noktaları üzerinden bağlantılarımız için 30 dakika veya daha uzun bir zaman aşımı uygulayın. Bu sayede, kullanıcılarınızın mobil cihazlarının pil tüketimini azaltırken güvenilir bağlantı sağlayabiliriz.

VPN etkileşimleri ve atlanabilirlik

Firebase Cloud Messaging, push mesajlarının sorunsuz bir şekilde yayınlanmasını sağlamak için çeşitli adımlar sunucu arasındaki bağlantının güvenilir olduğunu ve mümkün olduğunca sık yapmasını sağlar. VPN kullanımı bu çalışmayı karmaşık hâle getirir.

VPN'ler, FCM'ün güvenilirliği ve pil ömrünü en üst düzeye çıkarmak için bağlantısını ayarlaması gereken temel bilgileri maskeler. Bazı durumlarda VPN'ler uzun ömürlü bağlantıların kesilmesi ve bu bağlantıların eksik olması nedeniyle kötü bir kullanıcı deneyimine yol açması veya yüksek pil maliyetine sahip olur. VPN, bağlantı kurmamıza izin verecek şekilde bunun için şifrelenmiş bir bağlantı (temel ağ üzerinden) kullanarak VPN kablosuz bağlantı veya LTE) kullanır. Bu şekilde güvenilir, pil dostu bir sunmaktır. FCM uygulamasının atlanabilir VPN kullanımı FCM Push Bildirimi kanalı. Kayıt trafiği gibi diğer FCM trafiği, etkinse VPN'yi kullanır. FCM bağlantısı VPN'i atlar ve VPN'in sağlayabileceği ek avantajları kaybeder. RACI matrisleri gibi).

Farklı VPN'lerde, atlanıp atlanamayacağını kontrol etmek için farklı yöntemler bulunur. Talimatlar için kullandığınız VPN'nin dokümanlarına bakın.

VPN atlanabilir olacak şekilde yapılandırılmazsa Firebase Cloud Messaging, ve sunucuya bağlanmak için VPN ağını kullanmanız gerekir. Bu, Mesajların geciktiği ve daha fazla pil kullanımına neden olabileceği zaman dilimleri Cloud Messaging kullanımı, VPN üzerinden bağlantıyı sürdürmek için çalışır bağlantı.

Kimlik bilgileri

Uyguladığınız FCM özelliklerine bağlı olarak Firebase projenizden aşağıdaki kimlik bilgilerini ekleyin:

Proje kimliği FCM v1 HTTP uç noktasına yapılan isteklerde kullanılan, Firebase projenizin benzersiz tanımlayıcısı. Bu değer Firebase konsolunun Ayarlar bölmesi.
Kayıt jetonu

Her istemci uygulaması örneğini tanımlayan benzersiz bir jeton dizesi. Kayıt jetonu, tek cihaz ve cihaz grubu mesajlaşma için gereklidir. Kayıt jetonlarının gizli tutulması gerektiğini unutmayın.

Gönderen kimliği Firebase projenizi oluşturduğunuzda oluşturulan benzersiz bir sayısal değerdir. Firebase konsolunun Ayarlar bölmesinin Cloud Messaging sekmesinde bulunur. Gönderen kimliği, her bir kullanıcıyı tanımlamak için kullanılır. istemci uygulamasına ileti gönderebilen bir gönderendir.
Erişim jetonu HTTP v1'e yapılan istekleri yetkilendiren kısa ömürlü bir OAuth 2.0 jetonu API'ye gidin. Bu jeton, Firebase projenize ait bir hizmet hesabıyla ilişkilendirilir. Erişim jetonları oluşturmak ve mevcut jetonları değiştirmek için başlıklı makalede açıklanan adımlar Gönderme isteklerini yetkilendirin.
Sunucu anahtarı (**desteği sonlandırılan** eski protokoller için)

Sunucu uygulama sunucunuzu Google hizmetlerine erişim de dahil olmak üzere desteği sonlandırıldı Firebase Cloud Messaging eski protokolleri kullandığınızdan emin olun.

Önemli: Sunucu anahtarını girmeniz gerekir. Ayrıca, sunucunuzu yetkilendirmek için yalnızca sunucu anahtarlarını uygulama sunucusu. Android, Apple platformu ve tarayıcı anahtarları FCM tarafından reddediliyor.