Unity'deki 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.

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:

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

  2. 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.

Cihaz gruplarına yukarı akış mesajları gönderme

İstemci uygulamaları, mesajları alıcı alanındaki to bildirim anahtarına hedefleyerek cihaz gruplarına yukarı akış mesajları gönderebilir.

Aşağıdaki FCM çağrısı, bir bildirim anahtarına bir yukarı akış mesajı gönderir.

Firebase.Messaging.Message message;
message.To = notification_key;
message.MessageId = a_unique_message_id;
message.Data["hello"] = "world";
Firebase.Messaging.FirebaseMessaging.Send(message);