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.
Uygulama sunucunuzdaki eski XMPP veya HTTP protokolleri aracılığıyla cihaz grubu mesajlaşmasını kullanabilirsiniz. Node.js için Firebase Admin SDK , eski protokollere dayalı olarak cihaz grubu mesajlaşma yetenekleri de sağlar. 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:
Gruba eklemek istediğiniz her cihaz için kayıt jetonları edinin.
Belirli bir grubu (genellikle bir kullanıcı) grubun tüm ilişkili kayıt belirteçleriyle eşleyerek aygıt grubunu tanımlayan
notification_key
oluşturun. 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. Desteklenen anahtarların listesi için eski HTTP protokolü başvurusuna bakın.
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, aygıt grubunu temsil eden yeni bir notification_key
döndürür.
HTTP POST isteği
https://fcm.googleapis.com/fcm/notification
aşağıdakine benzer bir istek gönderin:
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
, belirli bir gruba özgü bir ad veya tanımlayıcıdır (örneğin, bir kullanıcı adı olabilir). notification_key_name
ve notification_key
, bir grup kayıt belirteci için benzersizdir. Aynı gönderen kimliği için birden fazla istemci uygulamanız varsa, notification_key_name
her istemci uygulaması için benzersiz olması önemlidir. Bu, mesajların yalnızca amaçlanan hedef uygulamaya gitmesini sağlar.
Yanıt biçimi
Başarılı bir istek, aşağıdaki gibi bir notification_key
döndürür:
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
Sonraki işlemlerde kullanmak için notification_key
ve ilgili notification_key_name
kaydedin.
Bir bildirim anahtarı alma
Mevcut bir notification_key_name
anahtarını almanız gerekiyorsa, gösterildiği gibi bir GET isteğinde notice_key_name kullanın:
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ıttan çıkarma
Varolan bir gruba aygıt eklemek veya mevcut bir gruptan aygıt çıkarmak için, ekleme veya kaldırma için operation
parametresi ayarlanmış bir POST isteği gönderin ve add
veya remove
için kayıt belirteçlerini sağlayın.
HTTP POST isteği
Örneğin, appUser-Chris
bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...
kayıt belirtecine sahip bir cihaz eklemek için şu isteği gönderirsiniz:
{
"operation": "add",
"notification_key_name": "appUser-Chris",
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
Yanıt biçimi
Başarılı bir cihaz ekleme veya kaldırma isteği, aşağıdakine benzer bir notification_key
döndürür:
{ "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. to
parametresini cihaz grubu için benzersiz bildirim anahtarına ayarlayın. Yük desteğiyle ilgili ayrıntılar için Mesaj türleri'ne bakın. 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 bir "başarı" örneği - notification_key
kendisiyle ilişkilendirilmiş 2 kayıt jetonu var ve mesaj her ikisine de başarıyla gönderildi:
{ "success": 2, "failure": 0 }
İşte bir "kısmi başarı" örneği - notification_key
kendisiyle ilişkilendirilmiş 3 kayıt belirteci vardır. İleti, yalnızca kayıt belirteçlerinden 1'ine başarıyla gönderildi. Yanıt mesajı, mesajı alamayan kayıt belirteçlerini ( registration_ids
) listeler:
{ "success":1, "failure":2, "failed_registration_ids":[ "regId1", "regId2" ] }
Bir ileti, bir notification_key
ile ilişkili bir veya daha fazla kayıt belirtecine teslim edilemediğinde, uygulama sunucusu, yeniden denemeler arasında geri çekilme ile yeniden denemelidir.
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 bir "başarı" örneği — notification_key
ile ilişkilendirilmiş 3 kayıt belirteci var ve mesaj başarıyla hepsine gönderildi:
{ "from": "aUniqueKey", "message_type": "ack", "success": 3, "failure": 0, "message_id": "m-1366082849205" }
İşte bir "kısmi başarı" örneği - notification_key
kendisiyle ilişkilendirilmiş 3 kayıt belirteci vardır. İ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ı sunucusu protokolü, HTTP veya XMPP için başvuru bilgilerine bakın.