Web/JavaScript'teki cihaz gruplarına mesaj gönderin

Cihaz grubu mesajlaşma, tek bir gruba birden fazla cihaz eklemenize olanak tanır. Bu, konu mesajlaşmasına benzer, ancak grup üyeliğinin yalnızca sunucularınız tarafından yönetilmesini sağlamak için kimlik doğrulamayı içerir. Örneğin, farklı telefon modellerine farklı mesajlar göndermek istiyorsanız, sunucularınız uygun gruplara kayıt ekleyebilir/kaldırabilir ve her gruba uygun mesajı gönderebilir. Cihaz grubu mesajlaşması, doğrudan uygulamanız yerine sunucularınızdan cihaz gruplarının yönetilmesini içermesi bakımından konu mesajlaşmasından farklıdır.

Sen eski aracılığıyla cihaz grup mesajlaşma kullanabilirsiniz XMPP veya HTTP uygulama sunucusunda protokolleri. Node.js için Firebase Yönetici SDK ayrıca cihazın grup mesajlaşma yetenekleri sağlamak mirası protokollere dayanarak. Bir bildirim anahtarı için izin verilen maksimum üye sayısı 20'dir.

Cihaz gruplarını yönetme

Bir cihaz grubuna mesaj göndermeden önce şunları yapmalısınız:

  1. Gruba eklemek istediğiniz her cihaz için kayıt jetonları edinin.

  2. Oluşturma notification_key grubun ilişkili kayıt belirteçleri tüm belirli bir grup (tipik olarak bir kullanıcı) eşleyerek aygıt grubunu tanımlar. Uygulama sunucusunda bildirim anahtarları oluşturabilirsiniz.

Cihaz gruplarının temel yönetimi - gruplar oluşturma ve kaldırma ve cihaz ekleme veya kaldırma - uygulama sunucusu aracılığıyla gerçekleştirilir. Eski Bkz HTTP protokolü referansı desteklenen tuşlarının listesi için.

Uygulama sunucusunda cihaz gruplarını yönetme

Cihaz grubu oluşturma

Bir aygıt grubu oluşturmak için, grup için bir ad ve aygıtlar için bir kayıt belirteçleri listesi sağlayan bir POST isteği gönderin. FCM yeni döner notification_key cihaz grubunu temsil eder.

HTTP POST isteği

İçin aşağıdaki gibi bir istek gönder https://fcm.googleapis.com/fcm/notification :

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

notification_key_name verilen bir gruba özgü bir isim veya tanımlayıcı (örneğin, bir kullanıcı adı olabilir) 'dir. notification_key_name ve notification_key tescil jeton bir grup özeldir. Önemlidir notification_key_name aynı için birden çok istemci uygulamaları da varsa istemci uygulama başına benzersizdir gönderen kimliği . Bu, mesajların yalnızca amaçlanan hedef uygulamaya gitmesini sağlar.

Yanıt biçimi

Başarılı bir istek, bir döner notification_key aşağıdaki gibi:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Kaydet notification_key ve ilgili notification_key_name sonraki operasyonlarda kullanılmak üzere.

Bir bildirim anahtarı alma

Varolan bir bildirim anahtarı almak gerekiyorsa, kullanmak notification_key_name gösterildiği gibi bir istek in:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

Belirli bir bildirim anahtarı adı için her GET isteği için sunucu benzersiz bir kodlanmış dize döndürür. Her dize farklı bir anahtar gibi görünse de, aslında geçerli bir "notification_key" değeridir.

Bir aygıt grubuna aygıt ekleme ve aygıt grubunu kaldırma

Ekleyebilir veya varolan gruptan cihazları kaldırmak için bir POST isteği göndermek operation parametre seti add veya remove ve ekleme ve kaldırma kayıt belirteçleri sağlarlar.

HTTP POST isteği

Örneğin, belirteç kaydı ile bir cihaz eklemek için bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... için appUser-Chris , Bu isteği göndermek olacaktır:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

Yanıt biçimi

Her iki eklenti için Başarılı bir istek ya da bir cihazı kaldırmak bir döndüren notification_key aşağıdaki gibi:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Cihaz gruplarına aşağı akış mesajları gönderme

Bir cihaz grubuna mesaj göndermek, tek bir cihaza mesaj göndermeye çok benzer. Set to aygıt grubu için özel bildirim anahtar parametresi. Bkz İleti türlerini yük desteği ile ilgili ayrıntılar için. Bu sayfadaki örnekler, HTTP ve XMPP protokollerinde cihaz gruplarına veri mesajlarının nasıl gönderileceğini gösterir.

Cihaz Grubu HTTP POST İsteği

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

Cihaz Grubu HTTP Yanıtı

İşte "başarı" bir örneğidir - notification_key kendisiyle ilişkili 2 kayıt belirteçleri vardır ve mesajın başarıyla ikisi de gönderildi:

{
  "success": 2,
  "failure": 0
}

Burada "kısmi başarı" bir örneğidir - notification_key 3 kayıt ile ilişkili jetonudur sahiptir. İleti, yalnızca kayıt belirteçlerinden 1'ine başarıyla gönderildi. Yanıt mesajı listeleri tescil belirteçleri ( registration_ids iletisi başarısız):

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Mesaj bir veya kayıt daha ilişkili jetonudur teslim edilmek üzere başarısız olduğunda notification_key , uygulama sunucusu denemeleri arasında back-off ile yeniden denemek gerekir.

Sunucu, üyesi olmayan bir cihaz grubuna mesaj göndermeye çalışırsa, yanıt 0 başarılı ve 0 başarısızlıkla aşağıdaki gibi görünür:

{
  "success": 0,
  "failure": 0
}

Cihaz Grubu XMPP Mesajı

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

Cihaz Grubu XMPP Yanıtı

Mesaj gruptaki cihazlardan herhangi birine başarıyla gönderildiğinde, XMPP bağlantı sunucusu bir ACK ile yanıt verir. Gruptaki tüm cihazlara gönderilen tüm mesajlar başarısız olursa, XMPP bağlantı sunucusu bir NACK ile yanıt verir.

İşte "başarı" bir örneğidir - notification_key kendisiyle ilişkili 3 kayıt belirteçleri vardır ve mesajın başarıyla hepsini gönderildi:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

Burada "kısmi başarı" bir örneğidir - notification_key 3 kayıt ile ilişkili jetonudur sahiptir. İleti, yalnızca kayıt belirteçlerinden 1'ine başarıyla gönderildi. Yanıt mesajı, mesajı alamayan kayıt belirteçlerini listeler:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

FCM bağlantı sunucusu gruptaki tüm cihazlara teslim edemediğinde. Uygulama sunucusu bir nack yanıtı alacaktır.

Mesajı seçeneklerinin tam listesi için seçtiğiniz bağlantı sunucu protokolü, referans bilgileri görebilir , HTTP veya XMPP .