Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

C ++ 'da cihaz gruplarına mesaj gönderme

Cihaz grubu mesajları, tek bir gruba birden fazla cihaz eklemenizi sağlar. Bu, konu mesajlarına benzer, ancak grup üyeliğinin yalnızca sunucularınız tarafından yönetilmesini sağlamak için kimlik doğrulaması 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. Aygıt grubu mesajları, doğrudan uygulamanız yerine sunucularınızdan aygıt gruplarını yönetmeyi içerdiği için konu mesajlarından farklıdır.

Cihaz grubu mesajlarını uygulama sunucunuzdaki eski XMPP veya HTTP protokolleri aracılığıyla kullanabilirsiniz. Eski protokollere dayanan Node.js için Firebase Admin SDK'sı, aygıt grubu mesajlaşma özellikleri de sağlar. Bir bildirim anahtarı için izin verilen maksimum üye sayısı 20'dir.

Aygıt gruplarını yönetme

Bir cihaz grubuna mesaj göndermeden önce şunları yapmanız gerekir:

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

  2. Belirli bir grubu (genellikle bir kullanıcı) grubun ilişkili tüm kayıt belirteçleriyle eşleyerek aygıt grubunu tanımlayan notification_key oluşturun. Uygulama sunucusunda veya Android istemci uygulamalarında bildirim anahtarları oluşturabilirsiniz.

Aygıt gruplarının temel yönetimi - grup oluşturma ve kaldırma, aygıt ekleme veya kaldırma - genellikle uygulama sunucusu üzerinden gerçekleştirilir. Desteklenen anahtarların listesi için eski HTTP protokol referansına bakın.

İsteğe bağlı olarak, Android istemci uygulamaları istemci tarafından cihaz gruplarını yönetebilir.

Uygulama sunucusundaki cihaz gruplarını yönetme

Aygıt grubu oluşturma

Bir aygıt grubu oluşturmak için, grup için bir ad ve aygıtlar için kayıt simgelerinin bir listesini 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": ["4", "8", "15", "16", "23", "42"]
}

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 belirtecine özgüdür. Aynı gönderen kimliği için birden fazla istemci uygulamanız varsa, notification_key_name istemci uygulaması başına benzersiz olması önemlidir. Bu, iletilerin 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 karşılık gelen notification_key_name kaydedin.

Bir bildirim anahtarını alma

Mevcut bir bildirim anahtarını almanız gerekirse, bir GET isteğinde gösterildiği gibi notification_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 bir 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.

Aygıt grubuna aygıt ekleme ve gruptan aygıt kaldırma

Mevcut bir gruba cihaz eklemek veya mevcut bir gruba cihaz çıkarmak için operation parametresi add veya remove üzere ayarlanmış bir POST isteği gönderin ve add veya remove için kayıt jetonları sağlayın.

HTTP POST isteği

Örneğin, appUser-Chris'e kayıt kimliği 51 olan bir cihaz eklemek için şu isteği gönderirsiniz:

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

Yanıt biçimi

Cihaz ekleme veya kaldırma işleminden başarıyla geçtiğinizde, aşağıdaki gibi bir notification_key döndürülür:

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

Cihaz gruplarına aşağı yönlü mesaj 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. Yük desteği hakkında ayrıntılar için İleti türleri konusuna bakın. Bu sayfadaki örnekler, HTTP ve XMPP protokollerindeki aygıt gruplarına veri mesajlarının nasıl gönderileceğini gösterir.

Aygıt 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!",
   }
}

Aygıt Grubu HTTP Yanıtı

İşte "başarılı" örneği - notification_key kendisiyle ilişkilendirilmiş 2 kayıt jetonu vardır ve ileti her ikisine de başarıyla gönderilmiştir:

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

İşte "kısmi başarı" örneği - notification_key kendisiyle ilişkilendirilmiş 3 kayıt jetonu vardır. İleti, yalnızca kayıt jetonlarından birine başarıyla gönderildi. Yanıt iletisi, iletiyi alamayan kayıt jetonlarını listeler:

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

Bir notification_key bir notification_key ilişkilendirilmiş bir veya daha fazla kayıt belirtecine teslim edilemediğinde, uygulama sunucusunun yeniden denemeler arasında geri çekilmeyi yeniden denemesi gerekir.

Sunucu, üyesi olmayan bir aygıt grubuna ileti 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
}

Aygıt 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>

Aygıt Grubu XMPP Yanıtı

İleti gruptaki aygıtlardan birine başarıyla gönderildiğinde, XMPP bağlantı sunucusu bir ACK ile yanıt verir. Gruptaki tüm aygıtlara gönderilen tüm iletiler başarısız olursa, XMPP bağlantı sunucusu bir NACK ile yanıt verir.

İşte "başarılı" örneği - notification_key kendisiyle ilişkili 3 kayıt jetonu vardır ve ileti hepsine başarıyla gönderilmiştir:

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

İşte "kısmi başarı" örneği - notification_key kendisiyle ilişkilendirilmiş 3 kayıt jetonu vardır. İleti, yalnızca kayıt jetonlarından birine başarıyla gönderildi. Yanıt iletisi, iletiyi 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 aygıtlara teslim edemediğinde. Uygulama sunucusu boş bir yanıt alacak.

İleti 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ı yönlü mesaj gönderme

İstemci uygulamaları uygun bildirim anahtarına mesajlar hedefleyerek mesajlar cihaz gruplarına akıntıya gönderebilir to sahada.

FCM'ye yapılan aşağıdaki çağrı, bir bildirim anahtarına yukarı akış mesajı gönderir.

::firebase::messaging::Message message;
message.to = notification_key;
message.message_id = a_unique_message_id;
message.data["hello"] = "world";
::firebase::messaging::Send(message);