Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Mengirim pesan upstream di Android

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Jika server aplikasi Anda mengimplementasikan protokol XMPP Connection Server , ia dapat menerima pesan upstream dari perangkat pengguna ke cloud. Untuk memulai pesan upstream, aplikasi klien mengirimkan permintaan yang berisi hal berikut:

  • Alamat server aplikasi penerima dalam format SENDER_ID@fcm.googleapis.com .
  • ID pesan yang harus unik untuk setiap ID pengirim .
  • Data pesan terdiri dari pasangan kunci-nilai muatan pesan.

Saat menerima data ini, FCM membuat stanza XMPP untuk dikirim ke server aplikasi, menambahkan beberapa informasi tambahan tentang perangkat dan aplikasi pengirim.

Kirim pesan upstream dari aplikasi klien Android

Aplikasi Android Anda dapat mengirim pesan upstream menggunakan 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());

Menangani callback pesan upstream

Dengan FirebaseMessaging , Anda bisa mengimplementasikan callback onMessageSent dan onSendError untuk memeriksa status pesan upstream. Dalam kasus kesalahan, onSendError mengembalikan SendException dengan kode kesalahan. Misalnya, jika klien mencoba mengirim lebih banyak pesan setelah batas 20 pesan tercapai, klien akan mengembalikan SendException#ERROR_TOO_MANY_MESSAGES .

Jika perangkat sedang offline atau layanan FCM tidak tersedia untuk meneruskan pesan upstream ke server Anda, instance aplikasi klien Android dapat mengumpulkan maksimal 20 pesan tertunda. Jika pesan tersebut kedaluwarsa sebelum FCM berhasil mengirimkannya, onSendError SendException#ERROR_TTL_EXCEEDED .

Untuk mengoptimalkan penggunaan jaringan, FCM mengelompokkan tanggapan ke onMessageSent dan onSendError , sehingga pengakuan mungkin tidak langsung untuk setiap pesan.

Terima pesan XMPP di server aplikasi

Saat FCM menerima panggilan perpesanan upstream dari aplikasi klien, FCM menghasilkan stanza XMPP yang diperlukan untuk mengirim pesan upstream. FCM menambahkan bidang category dan from , lalu mengirimkan bait seperti berikut ke server aplikasi:

<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>

Mengirim pesan ACK

Menanggapi pesan upstream seperti di atas, server aplikasi harus menggunakan koneksi yang sama untuk mengirim pesan ACK yang berisi ID pesan unik. Jika FCM tidak menerima ACK, FCM dapat mencoba mengirim pesan ke server aplikasi lagi.

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

Lihat Referensi Server Koneksi XMPP untuk informasi selengkapnya tentang sintaks pesan upstream.