Uygulama sunucunuz XMPP Bağlantı Sunucusu protokolünü uygularsa, bir kullanıcının cihazından buluta yukarı akış mesajları alabilir. Bir yukarı akış mesajı başlatmak için istemci uygulaması 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.
Bu verileri aldığında FCM, uygulama sunucusuna göndermek için bir XMPP kıtası oluşturur ve gönderen cihaz ve uygulama hakkında bazı ek bilgiler ekler.
Bir Android istemci uygulamasından yukarı akış mesajı gönderin
Android uygulamanız, FirebaseMessaging.send kullanarak bir yukarı akış mesajı gönderebilir:
Java
FirebaseMessaging fm = FirebaseMessaging.getInstance(); fm.send(new RemoteMessage.Builder(SENDER_ID + "@fcm.googleapis.com") .setMessageId(Integer.toString(messageId)) .addData("my_message", "Hello World") .addData("my_action","SAY_HELLO") .build());
Kotlin+KTX
val fm = Firebase.messaging fm.send(remoteMessage("$SENDER_ID@fcm.googleapis.com") { setMessageId(messageId.toString()) addData("my_message", "Hello World") addData("my_action", "SAY_HELLO") })
Yukarı akış mesajı geri aramalarını yönetin
FirebaseMessaging
ile, yukarı akış mesajlarının durumunu kontrol etmek için onMessageSent
ve onSendError
geri aramalarını uygulayabilirsiniz. Hata durumlarında, onSendError
SendException
. Örneğin, istemci 20 mesaj sınırına ulaşıldıktan sonra daha fazla mesaj göndermeye çalışırsa SendException#ERROR_TOO_MANY_MESSAGES
döndürür.
Cihazın çevrimdışı olduğu veya FCM hizmetinin yukarı akış mesajlarını sunucunuza iletmek için kullanılamadığı durumlarda, Android istemci uygulaması örnekleri en fazla 20 bekleyen mesaj biriktirebilir. Bu tür mesajların süresi FCM tarafından başarıyla gönderilmeden önce sona ererse, onSendError
SendException#ERROR_TTL_EXCEEDED
döndürür.
Ağ kullanımını optimize etmek için FCM, onMessageSent
ve onSendError
yanıtları toplu olarak işler, bu nedenle onay her mesaj için hemen olmayabilir.
Uygulama sunucusunda XMPP mesajları alın
FCM, bir istemci uygulamasından bir yukarı akış mesajlaşma araması aldığında, yukarı akış mesajını göndermek için gerekli XMPP kıtasını oluşturur. FCM, category
from
alanlardan ekler ve ardından uygulama sunucusuna aşağıdakine benzer bir kıta 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 yukarı akış 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 bir ACK almazsa, mesajı 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ış ileti sözdizimi hakkında daha fazla bilgi için XMPP Bağlantı Sunucusu Başvurusu'na bakın.