Mengirim pesan upstream di iOS

Jika server aplikasi Anda menerapkan protokol Server Koneksi XMPP, server tersebut dapat menerima pesan upstream dari perangkat pengguna ke cloud. Untuk memulai pesan upstream, aplikasi klien harus mengirimkan permintaan yang berisi hal berikut ini:

  • Alamat server aplikasi penerima dalam format SENDER_ID@gcm.googleapis.com.
  • ID pesan yang harus unik untuk setiap ID pengirim.
  • Data pesan yang terdiri dari key-value pair pada payload pesan.

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

Mengirim pesan upstream dari aplikasi klien iOS

Untuk mengirim pesan upstream ke server, aplikasi klien iOS akan menulis pesan, terhubung ke FCM, dan memanggil sendMessage.

Untuk melakukan koneksi, setel tanda shouldEstablishDirectChannel ke YES pada AppDelegate. FCM mengelola koneksi tersebut, menutupnya saat aplikasi Anda berpindah ke latar belakang, dan membukanya kembali setiap kali aplikasi berada di latar depan.

Konfigurasikan panggilan ke sendMessage seperti ditunjukkan berikut ini:

Objective-C

[[FIRMessaging messaging] sendMessage:message
                                   to:receiver
                        withMessageID:messageID
                           timeToLive:ttl];

Swift

Messaging.messaging().sendMessage(message,
                                     to: to,
                                     withMessageID: messageId,
                                     timeToLive: ttl)

dalam hal ini:

  • to adalah alamat server aplikasi penerima dalam format SENDER_ID@gcm.googleapis.com.

  • withMessageID adalah pengidentifikasi unik untuk pesan. Semua callback penerima pesan akan diidentifikasi berdasarkan ID pesan ini.

  • message adalah kamus kunci dan nilai sebagai string. Setiap key-value pair yang bukan string akan diabaikan.

  • timeToLive adalah waktu aktif. Jika tidak dapat mengantarkan pesan sebelum masa berlaku ini habis, FCM akan mengirim notification kembali ke klien.

Pustaka klien FCM menyimpan pesan dalam cache di aplikasi klien, dan mengirimkannya ketika klien memiliki koneksi server yang aktif. Begitu menerima pesan tersebut, server koneksi FCM akan mengirimkannya ke server aplikasi.

Menangani callback pesan upstream

Tangani callback upstream dengan menambahkan pengamat yang mendeteksi sendDataMessageFailure dan sendDataMessageSuccess, lalu ambil informasi error dari pemilih. Pada contoh ini, FIRMessagingSendErrorNotification merupakan pemilih yang digunakan untuk menangani callback:

- (void)sendDataMessageFailure:(NSNotification *)notification {
  NSString *messageID = (NSString *)message.object;
}
- (void)sendDataMessageSuccess:(NSNotification *)notification {
  NSString *messageID = (NSString *)message.object;
  NSDictionary *userInfo = message.userInfo; // contains error info etc
}

Untuk mengoptimalkan penggunaan jaringan, FCM memberi tanggapan terhadap sendDataMessageFailure dan sendDataMessageSuccess secara bertahap, sehingga pernyataan penerimaan untuk setiap pesan mungkin tidak langsung muncul.

Menerima pesan XMPP di server aplikasi

Ketika FCM menerima panggilan pesan upstream dari aplikasi klien, FCM akan membuat stanza XMPP yang diperlukan untuk mengirim pesan upstream. FCM akan menambahkan kolom category dan from, lalu mengirimkan stanza seperti berikut ini 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

Sebagai respons atas pesan upstream seperti yang ditunjukkan di atas, server aplikasi harus menggunakan koneksi yang sama untuk mengirim pesan ACK yang berisi ID pesan unik. Jika FCM tidak menerima ACK, pesan tersebut mungkin dikirim kembali ke server aplikasi.

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

Baca Referensi Server Koneksi XMPP untuk mengetahui informasi lebih lanjut mengenai sintaks pesan upstream.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.