Uygulama sunucunuz XMPP Bağlantı Sunucusu protokolünü uyguluyorsa kullanıcının cihazından buluta giden iletileri alabilir. İstemci uygulaması, yayın mesajı başlatmak için aşağıdakileri içeren bir istek gönderir:
- Alıcı uygulama sunucusunun
SENDER_ID@fcm.googleapis.com
biçimindeki adresi. - Her gönderen kimliği için benzersiz olması gereken bir ileti kimliği.
- Mesajın yükünün anahtar/değer çiftlerini içeren mesaj verileri.
FCM bu verileri aldığında, gönderen cihaz ve uygulama hakkında bazı ek bilgiler ekleyerek uygulama sunucusuna gönderilecek bir XMPP dizesi oluşturur.
Unity istemci uygulamasından yayın mesajı gönderme
Bir Unity istemci uygulaması, sunucuya yukarı akış mesajları göndermek için bir mesaj oluşturur ve aşağıdaki gibi Send
işlevini çağırır:
Firebase.Messaging.Message message;
message.To = SENDER_ID + "@fcm.googleapis.com";
message.MessageId = get_unique_message_id();
message.Data("my_message", "Hello World");
message.Data("my_action", "SAY HELLO");
message.TimeToLive = kTimetoLive;
Firebase.Messaging.FirebaseMessaging.Send(message);
Bu örnekte:
message.To
, alıcı uygulama sunucusununSENDER_ID@fcm.googleapis.com
biçimindeki adresidir.message.MessageId
, benzersiz bir ileti tanımlayıcısıdır. İleti alıcısı geri çağırmalarının tümü bu ileti kimliğine göre tanımlanır.message.Data
, anahtarların ve değerlerin dize olarak eşlendiği bir haritadır.message.TimeToLive
, cihaz çevrimdışıysa mesajın FCM depolama alanında ne kadar süre (saniye cinsinden) tutulacağını belirtir. FCM, bu süre dolmadan iletiyi teslim edemezse istemciye geri bildirim gönderir.
FCM istemci kitaplığı, mesajı istemci uygulamasında önbelleğe alır ve istemcinin etkin bir sunucu bağlantısı olduğunda gönderir. FCM, iletiyi aldıktan sonra uygulama sunucusuna gönderir.
Uygulama sunucusunda XMPP mesajları alma
FCM, istemci uygulamasından yukarı akış mesajlaşma çağrısı aldığında yukarı akış mesajını göndermek için gerekli XMPP dörtlüklerini oluşturur.
FCM, category
ve from
alanlarını ekledikten sonra uygulama sunucusuna aşağıdaki gibi bir dize gönderir:
<message id=""> <gcm xmlns="google:mobile:data"> { "category":"com.example.yourapp", // to know which app sent it "data": { "hello":"world", }, "message_id":"m-123", "from":"REGID" } </gcm> </message>
ACK mesajı gönderme
Yukarıdaki gibi bir yayın mesajına yanıt olarak uygulama sunucusu, benzersiz mesaj kimliğini içeren bir ACK mesajı göndermek için aynı bağlantıyı kullanmalıdır. FCM, ACK almıyorsa iletiyi uygulama sunucusuna göndermeyi yeniden deneyebilir.
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
Yukarı akış mesajı söz dizimi hakkında daha fazla bilgi için XMPP Bağlantı Sunucusu Referansı'na bakın.