C++'ta cihaz gruplarına ileti gönder

Cihaz grubu mesajları, tek bir gruba birden fazla cihaz eklemenize olanak tanır. Bu, konu mesajları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, kayıtları uygun gruplara ekleyebilir/kaldırabilir ve her gruba uygun mesajı gönderebilir. Cihaz grubu mesajları, cihaz gruplarını doğrudan uygulamanızdan değil sunucularınızdan yönetmeyi içerdiği için konu mesajlarından farklıdır.

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:

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

  2. Belirli bir grubu (genellikle bir kullanıcıyı) grubun ilişkili tüm kayıt jetonlarıyla eşleyerek cihaz grubunu tanımlayan notification_key değerini oluşturun. Uygulama sunucusunda bildirim anahtarları oluşturabilirsiniz.

Cihaz gruplarının temel yönetimi (grup oluşturma ve kaldırma, cihaz ekleme veya kaldırma), gönderme isteklerini yetkilendirmek için kısa süreli jetonlar kullanılarak HTTP v1 API üzerinden gerçekleştirilir. Desteklenen anahtarların listesi için Cihaz grubu yönetim anahtarları başlıklı makaleyi inceleyin.

Uygulama sunucusunda cihaz gruplarını yönetme

Cihaz grubu oluşturma

Cihaz grubu oluşturmak için grubun adını ve cihazların kayıt jetonlarının listesini içeren 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'e aşağıdaki gibi bir istek gönderin:

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
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 (ör. kullanıcı adı olabilir). notification_key_name ve notification_key, bir kayıt jetonu grubuna özgüdür. Aynı gönderen kimliği için birden fazla istemci uygulamanız varsa notification_key_name değerinin istemci uygulaması başına benzersiz olması önemlidir. Bu sayede mesajlar yalnızca amaçlanan hedef uygulamaya gönderilir.

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 değerini kaydedin.

Bildirim anahtarı alma

Mevcut bir bildirim anahtarını almanız gerekiyorsa GET isteğinde aşağıdaki gibi notification_key_name kullanın:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}

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

Cihaz grubuna cihaz ekleme ve gruptan cihaz kaldırma

Mevcut bir gruba cihaz eklemek veya gruptan cihaz kaldırmak için operation parametresi add veya remove olarak ayarlanmış bir POST isteği gönderin ve ekleme veya kaldırma için kayıt jetonlarını sağlayın.

HTTP POST isteği

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

Cihaz ekleme veya kaldırma isteği başarıyla sonuçlanırsa aşağıdaki gibi bir notification_key döndürülür:

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

Cihaz grubu yönetim anahtarları

Aşağıdaki tabloda, cihaz grupları oluşturma ve üye ekleme ya da kaldırmayla ilgili anahtarlar listelenmiştir.

Tablo 10. Cihaz grubu yönetim anahtarları.

Parametre Kullanım Açıklama
operation Zorunlu, dize Çalıştırılacak işlem.Geçerli değerler create, add ve remove'dir.
notification_key_name Zorunlu, dize Oluşturulacak veya değiştirilecek cihaz grubunun kullanıcı tanımlı adı.
notification_key Zorunlu (create işlemi, dize Cihaz grubunun benzersiz tanımlayıcısı. Bu değer, başarılı bir create işleminin yanıtında döndürülür ve cihaz grubunda yapılan sonraki tüm işlemler için gereklidir.
registration_ids Zorunlu, dize dizisi Eklenecek veya kaldırılacak cihaz jetonları. Bir cihaz grubundaki mevcut tüm kayıt jetonlarını kaldırırsanız FCM, cihaz grubunu siler.

Aşağı akış mesajlarını cihaz gruplarına gönderme

Cihaz gruplarına mesaj göndermek için HTTP v1 API'yi kullanın. Şu anda HTTP veya XMPP için desteği sonlandırılmış eski gönderme API'lerini ya da eski protokollere dayalı Node.js için Firebase Admin SDK'ın eski sürümlerinden herhangi birini kullanarak cihaz gruplarına gönderim yapıyorsanız en kısa sürede HTTP v1 API'ye geçmenizi önemle tavsiye ederiz. Eski gönderme API'leri Haziran 2024'te devre dışı bırakılacak ve kaldırılacaktır.

Bir cihaz grubuna mesaj gönderme işlemi, gönderme isteklerini yetkilendirmek için aynı yöntemin kullanıldığı tek bir cihaza mesaj gönderme işlemine çok benzer. token alanını grup bildirim anahtarı olarak ayarlayın:

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
   "message":{
      "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
      "data":{
        "hello": "This is a Firebase Cloud Messaging device group message!"
      }
   }
}

cURL komutu

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
   "data":{
     "hello": "This is a Firebase Cloud Messaging device group message!"
   },
   "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send