Uygulama sunucunuz XMPP Bağlantı Sunucusu protokolünü uyguluyorsa, 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 mesaj 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öndermek için bir XMPP kıtası oluşturur.
Bir Android istemci uygulamasından yukarı akış mesajı gönderin
Android uygulamanız, FirebaseMessaging.send kullanarak bir yukarı akış mesajı gönderebilir:
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") }, )
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());
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
hata kodu içeren bir SendException
döndürür. Örneğin, istemci 20 iletilik sınıra ulaşıldıktan sonra daha fazla ileti 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 yönlendirmek için kullanılamadığı durumlarda, Android istemci uygulaması örnekleri en fazla 20 bekleyen mesaj toplayabilir. Bu tür iletilerin süresi, FCM başarıyla gönderemeden önce sona ererse, onSendError
SendException#ERROR_TTL_EXCEEDED
döndürür.
Ağ kullanımını optimize etmek için, FCM yanıtları onMessageSent
ve onSendError
öğelerine gruplandırır, bu nedenle onay her ileti için hemen olmayabilir.
Uygulama sunucusunda XMPP mesajları alın
FCM, bir istemci uygulamasından bir yukarı akış mesajlaşma çağrısı aldığında, yukarı akış mesajını göndermek için gerekli XMPP kıtasını oluşturur. FCM, category
ve from
ekler ve ardından uygulama sunucusuna aşağıdakine benzer bir dörtlük 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 sunucusunun benzersiz mesaj kimliğini içeren bir ACK mesajı göndermek için aynı bağlantıyı kullanması gerekir. 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ış mesajı sözdizimi hakkında daha fazla bilgi için XMPP Bağlantı Sunucusu Referansına bakın.