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 Unity
Untuk mengirim pesan upstream ke server, aplikasi klien Unity membuat pesan dan memanggil Send
seperti yang ditunjukkan:
Firebase.Messaging.Message message;
message.To = SENDER_ID + "@fcm.googleapis.com";
message.MessageId = get_unique_message_id();
message.Data("my_message", "Hello World");
message.Data("my_action", "SAY HELLO");
message.TimeToLive = kTimetoLive;
Firebase.Messaging.FirebaseMessaging.Send(message);
di mana:
message.To
adalah alamat server aplikasi penerima dalam formatSENDER_ID@fcm.googleapis.com
.message.MessageId
adalah pengidentifikasi pesan unik. Semua callback penerima pesan diidentifikasi berdasarkan ID pesan ini.message.Data
adalah peta kunci dan nilai sebagai string.message.TimeToLive
menentukan berapa lama (dalam detik) pesan harus disimpan di penyimpanan FCM jika perangkat offline. Jika FCM tidak dapat mengirimkan pesan sebelum kedaluwarsa ini tercapai, FCM mengirimkan notifikasi kembali ke klien.
Pustaka klien FCM meng-cache pesan di aplikasi klien dan mengirimkannya saat klien memiliki koneksi server yang aktif. Saat menerima pesan, FCM mengirimkannya ke server aplikasi.
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.