Uygulama sunucunuz XMPP Bağlantı Sunucusu protokolünü uyguluyorsa 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.
FCM, bu verileri aldığında uygulama sunucusuna gönderilecek bir XMPP dizesi oluşturur ve gönderen cihaz ve uygulama hakkında bazı ek bilgiler ekler.
Bir Android istemci uygulamasından yukarı akış mesajı gönderme
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 koduyla birlikte bir SendException
döndürür. Ö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
değerini döndürür.
Cihazın çevrimdışı olduğu veya FCM hizmetinin yukarı akış mesajlarını sunucunuza iletemediği durumlarda, Android istemci uygulaması örnekleri en fazla 20 bekleyen mesaj biriktirebilir. Bu tür mesajların süresi FCM tarafından başarılı bir şekilde gönderilmeden önce dolarsa, onSendError
SendException#ERROR_TTL_EXCEEDED
değerini döndürür.
Ağ kullanımını optimize etmek için FCM, onMessageSent
ve onSendError
yanıtlarını toplu hale getirir, böylece onay her mesaj için hemen gerçekleşmeyebilir.
Uygulama sunucusunda XMPP mesajlarını alın
FCM, bir istemci uygulamasından yukarı akış mesajlaşma çağrısı aldığında, yukarı akış mesajını göndermek için gerekli XMPP dizesini oluşturur. FCM, category
ve alan 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.