FCM mesajları hakkında

Firebase Cloud Messaging (FCM), çok çeşitli mesajlaşma seçenekleri sunar ve olanaklar. Bu sayfadaki bilgiler şunları yapma amaçlıdır: farklı FCM mesajı türlerini ve bu mesajlarla ilgili neler yapabileceğine bakacağız.

Mesaj türleri

FCM ile, istemcilere iki tür mesaj gönderebilirsiniz:

  • Bildirim mesajları (bazen "mesajları göster" olarak da düşünülür.) Bunlar, FCM SDK'sı tarafından otomatik olarak işlenir.
  • İstemci uygulaması tarafından işlenen veri mesajları.

Bildirim mesajları, kullanıcıların görebildiği önceden tanımlanmış bir dizi anahtar içerir. Buna karşılık veri mesajları, yalnızca kullanıcı tanımlı özel anahtar/değer çiftinizi içerir. çiftler. Bildirim mesajları isteğe bağlı olarak, veri yükü. Her iki mesaj türü için maksimum yük 4.096 bayttır. Aşağıdakiler dışında: Firebase konsolundan 1000 karakteri zorunlu kılan bir mesaj göndererek limit.

Senaryoyu kullan Nasıl gönderilir?
Bildirim mesajı FCM SDK'sı, mesajı son kullanıcı cihazlarına gösteriyor arka planda çalışırken istemci uygulaması adına gönderilir. Uygulama ön planda çalışıyorsa bildirim alındığında uygulamanın kodu davranışı belirler. Bildirim mesajlarında, kullanıcıların görebildiği önceden tanımlanmış anahtarlar ve Özel anahtar/değer çiftlerinin isteğe bağlı veri yükü.
  1. Cloud Functions gibi güvenilir bir ortamda veya uygulama sunucunuzda Admin SDK'sı veya HTTP v1 API. notification tuşunu 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 Metni, Başlık vb. bilgileri girip 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. Gönderme isteğinde, data özelliğini ayarlayın. tuşuna basın.

FCM SDK'sının görüntüleme işlemlerini yapmasını istediğinizde bildirim mesajlarını kullanın Uygulamanız arka planda çalışırken otomatik olarak bir bildirim alırsınız. 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, FCM bildirimi görüntülemeyi yönetir ve istemci uygulaması veri yükünü üstlenir.

Bildirim mesajları

Test veya pazarlama ve kullanıcı yeniden etkileşimi için gönderebileceğiniz bildirim mesajlarını kontrol edin. Firebase konsolu, Google Ad Manager A/B Testi: ve pazarlama mesajlarını iyileştirir.

Admin SDK veya FCM protokolleri, 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, burada JSON biçiminde bir bildirim mesajı gönderebilirsiniz. Kullanıcılar belirli bir süre içinde başlığı "Portekiz - Danimarka" ve metnin "mükemmel eşleşme!" cihazda:

{
  "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, fonksiyonudur.

HTTP v1 Protokolü bildirim nesnesini inceleyin. referans belgeler oluşturma bildirimi için kullanılabilen önceden tanımlanmış anahtarların tam listesi için mesaj.

Veri mesajları

Özel anahtar/değer çiftlerinizle uygun anahtarı istemci uygulamaya veri yükü gönderebilirsiniz.

Ö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. mesajı alan tüm platformlardaki müşteriler tarafından yorumlanır. İstemci uygulaması her platformda veri yükünü alır kullanabilirsiniz.

Veri mesajları için şifreleme

Android Taşıma Katmanı (FCM mimarisi bölümüne 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 sağlamaz. Ancak, bu gibi harici çözümlerin de Kilometre veya DTLS

İ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 İçinde Bildirim oluşturucu olarak, yukarıdaki Özel veri alanlarını Gelişmiş seçenekler.

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 planda çalışırken uygulamanız bir mesaj alır nesne bulmanız gerekir.

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'sı 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ı:

  • tüm uygulama örnekleri tarafından yorumlanacak şekilde mesajı alabilir.
  • platforma özgü alan grupları (ör. AndroidConfig ve WebpushConfig), yalnızca belirtilen platformda çalışan uygulama örnekleri tarafından yorumlanır.

Platforma özel engellemeler, mesajlarınızı özelleştirmek için size bunların doğru şekilde ele alınmasını sağlamak için farklı platformlardan destek alabilirsiniz. İ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 yaygın alanlar:

Platforma özel alanlar ne zaman kullanılır?

Aşağıdakileri yapmak istediğinizde platforma özel alanları kullanın:

  • Alanları yalnızca belirli platformlara gönder
  • Ortak alanlara ek olarak platforma özel alanları gönderin

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, tüm platforma özgü alanları kullanmanız gerekir. Bunun nedeni, her bir platformun değeri biraz farklı yorumlayabilir. Örneğin, Android'de saniye cinsinden son kullanma süresi olarak ayarlıyken Apple'da son kullanma tarihi.

Örnek: Platforma özel teslim 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. Daha ayrıntılı olarak belirtmek gerekirse,

  • APN'lerin (Apple platformları) mesaj önceliğini düşük bir ayara ayarlarken Android ve Web platformları için uzun bir geçerlilik süresi belirler.
  • kullanıcının Android ve Apple'da (sırasıyla click_action ve category) bildirime dokunmasının sonucunu tanımlamak için uygun tuşları ayarlar.
{
  "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. Daha fazla bilgi için içeren istek oluşturmak için Gönderme İstekleri Oluşturma

Teslimat seçenekleri

FCM, şu adrese 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ışı şu cihazda destekleniyor: FCM'nin collapse_key aracılığıyla Android, Apple'da apns-collapse-id ve Topic aracılığıyla JavaScript/Web'de kullanılabilir. 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ılamaz mesajlar, her bir iletinin teslim edilir. 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'de olmadan depolanabilecek mesaj sayısı 100 ile sınırlıdır. daraltılır. Öğe sınırına ulaşıldığında, depolanan tüm iletiler silinir. Cihaz geri döndüğünde ise, sınıra ulaşıldığını belirten özel bir mesaj alır. Daha sonra uygulama, durumu düzgün şekilde işleyebilir. Bunun için, genellikle bir sunucuyu senkronize eder.

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, 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 Hangi anahtarların tutulacağı konusunda herhangi bir garanti verilmeden dört daraltma anahtarı.

Yük içermeyen konu mesajları varsayılan olarak daraltılabilir. Bildirim mesajları her zaman daraltılabilir ve collapse_key parametresini yoksayar.

Hangisini kullanmalıyım?

Daraltılabilir mesajlar performans açısından daha iyi bir seçenektir. Uygulamanızın daraltılamayan mesajlar kullanması gerekmiyorsa. Ancak, daraltılabilir mesajlar kullanıyorsanız FCM en fazla dört farklı daraltma anahtarının kullanılmasına izin verir FCM tarafından her gün istediğiniz zaman değiştirebilirsiniz. Bu sayıyı aşmamanız gerekir. Aksi takdirde öngörülemeyen sonuçlar doğurabilir.

Senaryoyu kullan Nasıl gönderilir?
Daraltılamaz Her mesaj, istemci uygulaması için önemlidir ve teslim edilir. Bildirim mesajları dışında hiçbir mesaj daraltılamaz. varsayılandır.
Katlanabilir Daha eski, ilgili bir mesajı oluşturan daha yeni bir mesaj olduğunda eski mesajın yerini FCM alır. Örnek: sunucudan bir veri senkronizasyonu başlatmak için kullanılan veya güncel olmayan iletiler bildirim mesajları. Mesaj isteğinizdeki 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. Bu davranış, Google Ads'deki normal ve yüksek öncelikli mesajların teslim edilmesinde aşağıdaki gibidir:

  • Normal öncelikli. Normal öncelikli mesajlar, uygulama ön plan. Arka plandaki uygulamalarda yayınlanma gecikti. Örneğin, kullanıcı arayüzünüzün senkronize halde tutulması veya uygulama verilerinin senkronize edilmesi gibi arka planda normal dağıtım ö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.

Aşağıda, FCM aracılığıyla gönderilen normal öncelikli bir mesaj örneği verilmiştir. Bir dergiyi bilgilendirmek için kullanılan HTTP v1 protokolü abone olan kullanıcıların, yeni içeriğin indirilmeye hazır olduğunu belirtmelidir:

{
  "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 ayarlama hakkında platforma özel daha fazla ayrıntı için:

Bir iletinin kullanım ömrünü 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. Ya da FCM, mesajları kasıtlı olarak geciktirebilir. bir uygulamanın aşırı kaynak tüketmesini ve bu nedenle pil ömrünü etkiliyor.

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 bir iletinin hiçbir zaman teslim edilmemesi anlamına gelebilir. Örneğin, mesaj, gelen bir arama veya görüntülü sohbet bildirimiyse yalnızca anlamlıdır çağrı sonlandırılmadan önce kısa bir süre boyunca kullanılabilir. 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) gösterir ve FCM'nin bu işlemden yararlandığı maksimum süreye karşılık gelir. mesajı iletmeye çalışır. Bunu içermeyen istekler alanı varsayılan olarak maksimum dört haftalık süreye ayarlanır.

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

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

Bir mesajın kullanım ömrünü belirtmenin bir başka avantajı da FCM, 0 saniyelik geçerlilik süresi. FCM, şu özelliklere sahip olmanız gereken mesajları en iyi şekilde teslim etme konusunda bilgilendirilmesi gerekir. Hedeflerinize göre time_to_live değeri 0, hemen teslim edilemeyen iletilerin silineceği anlamına gelir. Ancak, çünkü bu tür mesajlar hiçbir zaman depolanmaz. Bu durum, iletilerin Bildirim mesajları göndererek

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"
      }
    }
  }
}

Bir iletinin kullanım ömrü

Bir uygulama sunucusu, FCM'ye mesaj gönderip bir mesaj aldığında kimliği geri alırsa, iletinin bu e-posta adresine daha önce teslim edildiği olanak tanır. Bunun yerine, teslimat için kabul edildiği anlamına gelir. Ne olacak? mesajın kabul edilmesinin ardındaki birçok etkene bağlı olarak değişir.

En iyi senaryoda cihaz FCM'ye bağlıysa Ekran açıktır ve kısıtlama kısıtlaması yoksa ileti hemen teslim edilir.

Cihaz bağlı ancak Doz modundaysa düşük öncelikli mesaj depolanır bunu, cihaz Doz'un dışına çıkana kadar FCM tarafından belirlenir. 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, anahtarı ayarlanmazsa hem yeni hem de eski iletiler ileride teslim edilmek üzere saklanır.

Cihaz FCM'ye bağlı değilse mesaj, şu tarihe kadar saklanır: bağlantı kurulduğunda (yine de daraltma anahtarı kurallarına uyulur). Bir bağlantısı kurulduğunda, FCM bekleyen tüm iletileri olanak tanır. Cihaz tekrar bağlanmazsa (örneğin, fabrika ayarlarına sıfırlanmışsa) mesaj zaman aşımına uğrar ve FCM depolama alanından silindi. Varsayılan zaman aşımı süresi dört haftadır. time_to_live işareti ayarlanmaz.

İleti teslimiyle ilgili daha fazla bilgi edinmek için:

    Android veya Apple platformlarında mesaj teslimi hakkında daha fazla bilgi edinmek için bkz. 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şmasının etkinleştirilmiş olduğu Android cihazlarda cihaz bir aydan uzun süredir FCM'ye bağlanmamışsa, FCM, mesajı kabul etmeye devam 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. Daha sonra uygulama, durumu düzgün şekilde işleyebilir. Bunun için, genellikle bir sunucuyu senkronize eder.

Son olarak, FCM cihaza bir mesaj teslim etmeyi denediğinde ve Uygulama kaldırıldığında, FCM bu mesajı hemen siler ve kayıt jetonunu geçersiz kılar. Gelecekte bu adrese mesaj gönderme girişimleri cihaz NotRegistered hatasına neden olur.

Kısıtlama ve kotalar

Amacımız, FCM aracılığıyla gönderilen tüm iletileri her zaman teslim etmektir. Ancak, her mesajın gönderilmesi bazen genel olarak kötü bir kullanıcı deneyimine yol açabilir. 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 kısıtlama

HTTP v1 API'de aşağı akış için proje başına ve dakika başına kotalar kullanıma sunuldu bahsedeceğim. Dakikada 600 bin iletilik varsayılan kota, iletilerin% 99'undan fazlasını FCM geliştiricileri, hem sistemin kararlılığını hem de en aza indirildiğini öğrendiniz.

Ani trafik kalıpları kota aşılması hatalarına neden olabilir. Kotanın üzerinde senaryoda, sistem 429 kodlu (QUOTA_EXCEEDED) HTTP durum kodunu kota bir sonraki dakika içinde yeniden doldurulur. 429 yanıt Bu nedenle, 429'u dönüşüm oranlarına göre ele almanız önemle tavsiye edilir. yayınlanmış önerileri görebilirsiniz.

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ı

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

  1. Google Cloud Console'a gidin.
  2. API'ler ve hizmetler
  3. Tablo listesinden Firebase Cloud Messaging API'yi seçin.
  4. Seç: QUOTA & SİSTEM SINIRLARI.

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ışı isteğinde bulunmadan ö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 ile 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. Lansmanlar ve özel etkinlik istekleri yalnızca istemci hata oranı ve en iyi uygulama gereksinimlerine tabidir.

Ayrıca, FCM kotaları ile ilgili SSS bölümüne bakın.

Konu mesajı sınırı

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

İleti gönderme ücretleri için Takipçi Desteği'ne bakın.

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ı. Eşzamanlı mesaj sayısını sınırlıyoruz. çıkış sayısını 1.000'e çıkardık. Sonrasında, ek dağılmayı reddedebiliriz. veya bu isteklerin bir kısmı halihazırda mevcut olana kadar ilerleme dağılmaları tamamlandı.

Gerçek ulaşılabilir dağılma oranı, proje sayısından etkilenir aynı anda çıkış isteğinde bulunabilirsiniz. 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. Her ekip üyesinin kullanılabilir dağılma kapasitesi, proje dağılımına değil projeler arasında bölünür. kabul edersiniz. Projenizde devam eden iki dağılma varsa her bir dağılma yalnızca yarısını görebilir. Hedef EBM'nizi en üst düzeye çıkarmak için dağılma hızı, aynı anda yalnızca bir etkin yayma işleminin devam etmesidir.

Daraltılabilir mesaj kısıtlama

Yukarıda açıklandığı gibi daraltılabilir mesajlar, içerik barındırmayan bildirimlerdir. daralır. Bir geliştiricinin aynı mesajı bir uygulamaya çok sık gönderirse, söz konusu mesajın azaltılmasını kullanıcının piline olan etkisi.

Ö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 erteleyebiliriz. Böylece, ç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 iletilerde içeriği kullanılması amaçlanmıştır.

Daraltılabilir mesajları, cihaz başına uygulama başına maksimum 20 mesaj ile sınırlandırıyoruz. 1 mesaj her 3 dakikada bir yenilenir.

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 yukarı akış mesajlaşması için FCM sınırları Dakikada 1.500.000 gösterimde yukarı akış mesajları .

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'de tek bir mesaja dakikada 240, saatte 5.000 mesaj gönderebilirsiniz olanak tanır. 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ına neden olan mantığın gönderilmesini engellemez.

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, mobil cihazların bağlanmasına izin verecek şekilde yapılandırmanız gerekir FCM'ye eklemeniz gerekir. FCM genellikle bağlantı noktası 5228'i kullanır ancak bazen 443, 5229 ve 5230.

FCM, ağınıza bağlanan cihazlar için çü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 kararlaştırırsınız. 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ınız için alan adlarını kullanma kuralı, güvenlik duvarı cihazınızda çalışmıyor olabilir.

AçılacakTCP 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ız Ağ Adresi Çevrimi (NAT) veya Durum Bilgili Paket uyguluyorsa İnceleme (SPI), 30 dakika veya daha uzun bir zaman aşımı uygulayın 5228-5230 numaralı bağlantı noktalarından yararlanın. Bu sayede, kullanıcılara en çok bağlantı kabiliyetini artırırken kullanıcılarınızın pil tüketimini azaltır mobil cihaz cihazlar.

VPN etkileşimleri ve atlanabilirlik

Firebase Cloud Messaging, push mesajlaşmasının 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'nin özel ayarlamalar yapması için gereken temel bilgileri en üst düzeye çıkarmak için pil ömrü. Bazı durumlarda VPN'ler uzun ömürlü bağlantıların kesilmesi ve bu bağlantıların eksik olması nedeniyle kötü 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'nin atlanabilir VPN kullanımı FCM push bildirimi kanalı. Diğer FCM trafiği (ör. kayıt 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'ler, bir yapılandırmanın gerçekleşip gerçekleşmeyeceğini kontrol etmek için farklı yöntemler kullanır. atlanır. Talimatlar için VPN'nize özgü belgeleri inceleyin.

VPN, atlanabilir olacak şekilde yapılandırılmamışsa 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ışıyor. bağlantı.

Kimlik bilgileri

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

Proje kimliği Firebase projenizin benzersiz tanımlayıcısıdır ve FCM v1 HTTP uç noktası. Bu değer Firebase konsolu Ayarlar bölmesi.
Kayıt jetonu

Her istemci uygulaması örneğini tanımlayan benzersiz bir jeton dizesi. Kayıt jetonu tek bir cihaz ve cihaz için gereklidir Grup mesajı. Lütfen kayıt jetonları gizli tutulmalıdır.

Gönderen kimliği Firebase projenizi oluşturduğunuzda oluşturulan benzersiz bir sayısal değer Firebase konsolunun Cloud Messaging sekmesi Ayarlar bölmesi. 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 şuna ait bir hizmet hesabıyla ilişkilendirilmiş: . 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ılan 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.