Uygulama sunucunuz XMPP Bağlantı Sunucusu protokolü, kullanıcının cihazından buluta yayın öncesi mesajları 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ü olan anahtar/değer çiftlerini içeren mesaj verileri.
FCM, bu verileri aldığında uygulama sunucusuna göndermek için bir XMPP ifadesi oluşturur. gönderen cihaz ve uygulama hakkında bazı ek bilgiler ekleyin.
Bir Android istemci uygulamasından yukarı akış mesajı gönderme
Android uygulamanız, FirebaseMessaging.send yöntemini kullanarak yayın 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 çağırmalarını yönetme
FirebaseMessaging
ile, yayın öncesi iletilerin durumunu kontrol etmek için onMessageSent
ve onSendError
geri çağırma işlevlerini uygulayabilirsiniz. Hata durumunda onSendError
, hata kodu içeren bir SendException
döndürür. Örneğin, istemci 20 ileti sınırına ulaştıktan sonra daha fazla ileti göndermeye çalışırsa SendException#ERROR_TOO_MANY_MESSAGES
döndürülür.
Cihazın çevrimdışı olduğu durumlarda veya FCM
hizmet şunun için kullanılamıyor:
yukarı akış mesajlarını sunucunuza yönlendirebilirseniz, Android istemci uygulaması örnekleri
en fazla 20 bekleyen ileti biriktirebilir.
Bu tür iletilerin süresi FCM, başarılı bir şekilde gönderene kadar sona ererse
onSendError
, SendException#ERROR_TTL_EXCEEDED
değerini döndürür.
FCM, ağ kullanımını optimize etmek için yanıtları onMessageSent
paketinde toplu olarak işler
ve onSendError
bu nedenle onay işlemi her mesajda hemen yapılmayabilir.
Uygulama sunucusunda XMPP mesajları alma
FCM, bir istemci uygulamasından yukarı akış mesajlaşma çağrısı aldığında,
yukarı akış mesajını göndermek için gereken XMPP cümlesi.
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 bir ACK almazsa 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.