Android'de yukarı akış mesajları gönderme

.

Uygulama sunucunuz XMPP Bağlantı Sunucusu protokolü, kullanıcının cihazından buluta yayın öncesi mesajları alabilir. İstemci uygulaması, bir yukarı akış 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 ileti kimliği.
  • Mesaj yükünün 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, şunu kullanarak bir yukarı akış mesajı gönderebilir: FirebaseMessaging.send:

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, Yukarı akışın durumunu kontrol etmek için onMessageSent ve onSendError geri aramaları mesaj. Hatalı durumlarda onSendError, SendException döndürür. hata kodu içerir. Örneğin, müşteri bir 20 mesaj sınırına ulaşıldıktan sonra daha fazla mesaj gönderirse SendException#ERROR_TOO_MANY_MESSAGES

Cihazın çevrimdışı veya FCM'nin çevrimdışı olduğu durumlarda 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'nin başarılı bir şekilde gönderebilmesi için sona ererse ise onSendError, SendException#ERROR_TTL_EXCEEDED değerini döndürür.

FCM, ağ kullanımını optimize etmek için yanıtları onMessageSent ve onSendError bu nedenle onay işlemi her mesajda hemen yapılmayabilir.

Uygulama sunucusunda XMPP mesajlarını al

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ı ekler ve ardından metin, uygulama sunucusuna aşağıdakine benzer:

<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

Uygulama sunucusu, yukarıdaki gibi bir yukarı akış mesajına yanıt olarak İleti Kimliği. FCM bir ACK almazsa göndermeyi yeniden deneyebilir uygulama sunucusuna gönderilir.

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGID",
      "message_id":"m-123"
      "message_type":"ack"
  }
  </gcm>
</message>

XMPP Bağlantı Sunucusu Referansı'na bakın. sayfasına bakın.