了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Android'deki cihaz gruplarına mesaj gönderin

Cihaz grubu mesajlaşması, tek bir gruba birden fazla cihaz eklemenizi sağlar. 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ğrulama 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ı, cihaz gruplarını doğrudan uygulamanız yerine sunucularınızdan yönetmeyi 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. Firebase Admin SDK for Node.js'nin eski sürümleri, eski protokolleri temel alır ve ayrıca cihaz grubu mesajlaşma özellikleri 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:

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

  2. Belirli bir grubu (genellikle bir kullanıcıyı) grubun tüm ilişkili kayıt belirteçleriyle eşleyerek cihaz grubunu tanımlayan notification_key öğesini oluşturun. Uygulama sunucusunda bildirim anahtarları oluşturabilirsiniz.

Cihaz gruplarının temel yönetimi - grup 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ü referansına bakın.

Uygulama sunucusundaki cihaz gruplarını yönetme

Bir cihaz grubu oluşturma

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

HTTP POST isteği

https://fcm.googleapis.com/fcm/notification adresine 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 grup için benzersiz olan 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 formatı

Başarılı bir istek, aşağıdakine benzer 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.

Bildirim anahtarı alma

Mevcut bir bildirim anahtarını almanız gerekiyorsa, bir GET isteğinde notification_key_name gösterildiği gibi 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ına yönelik 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 "bildirim_anahtarı" değeridir.

Bir cihaz grubuna cihaz ekleme ve çıkarma

Mevcut bir gruba cihaz eklemek veya gruptan cihaz çıkarmak için, operation parametresi add veya remove olarak ayarlanmış bir POST isteği gönderin ve ekleme veya çıkarma için kayıt belirteçlerini sağlayın.

HTTP POST isteği

Örneğin, bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... kayıt belirtecine sahip bir cihazı appUser-Chris 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 formatı

Bir aygıtı eklemeye veya kaldırmaya yönelik başarılı bir istek, 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ürlerine bakın. Bu sayfadaki örnekler, veri mesajlarının eski HTTP ve XMPP protokollerindeki cihaz gruplarına nasıl gönderileceğini gösterir.

Cihaz Grubu HTTP POST Talebi

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 belirteci vardır ve mesaj her ikisine de başarıyla gönderilmiştir:

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

İşte bir "kısmi başarı" örneği - notification_key kendisiyle ilişkilendirilmiş 3 kayıt belirteci vardır. Mesaj başarıyla yalnızca 1 kayıt jetonuna gönderildi. Yanıt mesajı, mesajı alamayan kayıt belirteçlerini ( registration_ids ) listeler:

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

Bir notification_key ile ilişkili bir veya daha fazla kayıt jetonuna bir mesaj 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ı 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 herhangi bir cihaza 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 kendisiyle ilişkilendirilmiş 3 kayıt belirteci vardır ve mesaj bunların hepsine başarıyla gönderilmiştir:

{
  "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. Mesaj başarıyla yalnızca 1 kayıt jetonuna gönderildi. Yanıt mesajı, mesajı alamayan kayıt jetonlarını 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ünün ( HTTP veya XMPP) referans bilgilerine bakın.