Menetapkan dan mengelola prioritas pesan

Anda memiliki dua opsi untuk menetapkan prioritas pengiriman pesan downstream di Android: prioritas normal dan tinggi. Pengiriman pesan berprioritas normal dan tinggi berfungsi sebagai berikut:

  • Prioritas normal. Ini adalah prioritas default untuk pesan data dan notifikasi. Pesan berprioritas normal segera dikirim saat perangkat tidak sedang dalam mode tidur. Saat perangkat sedang dalam mode Istirahatkan, pengiriman mungkin akan ditunda untuk menghemat baterai hingga perangkat keluar dari mode Istirahatkan. Untuk pesan yang kurang mendesak dari segi waktu, misalnya notifikasi email baru, menjaga agar UI selalu sinkron, atau menyinkronkan data aplikasi di latar belakang, pilihlah prioritas pengiriman normal.

  • Prioritas tinggi.FCM berupaya untuk segera mengirimkan pesan berprioritas tinggi, sehingga FCM bisa mengaktifkan perangkat yang sedang dalam mode tidur jika diperlukan, dan menjalankan beberapa pemrosesan terbatas (termasuk akses jaringan yang sangat terbatas). Pesan berprioritas tinggi umumnya menimbulkan interaksi pengguna dengan aplikasi Anda atau notifikasinya.

Memutuskan antara pesan prioritas tinggi dan normal

Meskipun pesan berprioritas normal cocok untuk pembaruan umum, pilih prioritas tinggi saat Anda perlu memastikan pengiriman segera untuk tindakan atau masalah yang mendesak. Karena waktu pengiriman untuk pesan berprioritas normal dapat terpengaruh oleh mode Istirahatkan, menetapkan sebagian besar notifikasi yang terlihat pengguna ke prioritas tinggi akan memastikan notifikasi tersebut dikirim dengan segera. Misalnya, notifikasi seperti pesan chat, masalah pada akun, atau pembaruan pesanan makanan, harus ditetapkan ke prioritas tinggi.

Pemrosesan pesan untuk pesan prioritas tinggi dan normal

Untuk notifikasi prioritas tinggi dan normal yang diterima di perangkat Android, beberapa detik diberikan untuk memproses payload pesan di handler onMessageReceived. Untuk notifikasi apa pun yang memerlukan pemrosesan payload pesan asinkron, sebaiknya gunakan konstruksi seperti WorkManager, karena hal ini dapat melebihi waktu yang diberikan ke handler onMessageReceived.

Untuk pesan berprioritas tinggi, Anda dapat menjadwalkan tugas yang diprioritaskan menggunakan Android WorkManager untuk memastikan notifikasi ini diprioritaskan dan berjalan hingga selesai.

Untuk pesan berprioritas normal, Anda dapat menjadwalkan OneTimeWorkRequest reguler menggunakan WorkManager Android. Tindakan ini akan memastikan bahwa pekerjaan tambahan yang diperlukan diproses, tanpa menggunakan pemrosesan yang diprioritaskan.

Menetapkan prioritas untuk pesan

Anda dapat mengirim notifikasi kepada pengguna menggunakan Admin SDK, FCM REST API, dan Firebase console. Untuk mengubah setelan prioritas dari Admin SDK dan FCM REST API, Anda harus mengupdate payload JSON pesan. Anda dapat menggunakan contoh kode berikut untuk melihat cara menetapkan prioritas ke tinggi. Untuk notifikasi yang dikirim dari konsol, setelan kolom notifikasi khusus Android tidak didukung.

 {
  "message": {
      "notification": {
          "body": "Purchase exceeding $500 detected",
          "title": "Credit card purchase"
      },
      "data": {
          "purchaser": "Your child",
          "items": "Gravity Defier Sneakers"
      },
      "android": {
          "priority": "high"
      },
      "apns": {
          "headers": {
              "apns-priority": "5"
          }
      }
  }
}

Menguji notifikasi prioritas tinggi dalam mode Istirahatkan

Untuk memastikan notifikasi prioritas tinggi Anda diterima dan diproses dengan benar saat diterima oleh pengguna, ikuti petunjuk berikut untuk menguji notifikasi Anda:

  1. Setel perangkat ke mode Istirahatkan menggunakan petunjuk di Menguji aplikasi dengan mode Istirahatkan.
  2. Akses token pendaftaran FCM dari aplikasi Anda di perangkat pengujian. Untuk mengetahui informasi selengkapnya tentang cara mengakses token, lihat Mengirim pesan pengujian ke aplikasi latar belakang.
  3. Setelah memiliki token FCM, kirim notifikasi prioritas tinggi ke perangkat pengujian menggunakan kode pengiriman notifikasi FCM atau perintah cURL%3B%0A%7D)-,cURL,-curl%20%2DX) yang memiliki parameter konfigurasi yang cocok dengan notifikasi prioritas tinggi Anda.

Penurunan prioritas FCM prioritas tinggi di Android

Pesan berprioritas tinggi di Android dimaksudkan untuk konten yang sensitif terhadap waktu dan terlihat oleh pengguna, serta akan menghasilkan notifikasi yang ditampilkan kepada pengguna. Jika FCM mendeteksi pola di mana pesan yang tidak menghasilkan notifikasi yang ditampilkan kepada pengguna, prioritas terhadap pesan Anda mungkin diturunkan menjadi prioritas normal atau didelegasikan untuk ditangani oleh layanan Google Play.

FCM menggunakan perilaku pesan selama 7 hari saat menentukan penurunan prioritas atau melakukan proxy terhadap pesan; hal ini membuat penentuan ini berlaku secara independen untuk setiap instance aplikasi. Jika, sebagai respons atas pesan prioritas tinggi, notifikasi ditampilkan dengan cara agar terlihat oleh pengguna, maka pesan berprioritas tinggi Anda berikutnya tidak akan terdampak.

Delegasi notifikasi dengan layanan Google Play

Pesan notifikasi berprioritas tinggi yang memenuhi kriteria tertentu akan di-proxy-kan oleh layanan Google Play, bukan diturunkan prioritasnya. Artinya, notifikasi ditampilkan oleh layanan Google Play atas nama aplikasi, tanpa perlu menjalankan aplikasi. Hal ini dilakukan untuk memberikan pengalaman pengguna yang lebih baik secara keseluruhan pada perangkat Android.

Perlu diperhatikan bahwa pesan notifikasi yang di-proxy-kan berisi perubahan pada cara pelaporan analisis yang terkait dengan pesan yang diterima:

  • Agar analisis untuk notifikasi yang di-proxy-kan dapat dilaporkan, aplikasi Anda harus menggunakan FCM SDK versi 24.0.0 atau yang lebih tinggi.
  • Anda mungkin melihat adanya penundaan atau penurunan dalam jumlah pesan yang diterima dibandingkan dengan jumlah sebelum diperkenalkannya notifikasi yang di-proxy-kan. Hal ini karena analisis untuk notifikasi yang di-proxy-kan hanya dilaporkan setelah aplikasi Anda dimulai, dan mungkin tidak dilaporkan sama sekali jika notifikasi tidak menyebabkan aplikasi terbuka.

Mem-proxy-kan pesan notifikasi dengan cara ini adalah perilaku default untuk aplikasi yangmenggunakan Android Q+ dan layanan Google Play versi 19054000 atau yang lebih baru. Pesan yang dikirim melalui HTTP v1 API akan di-proxy-kan, tetapi pesan yang dikirim melalui Firebase console atau API lama tidak akan di-proxy-kan. Perhatikan bahwa fitur ini masih dalam versi Beta, dan dapat berubah sewaktu-waktu.

Meskipun kami sangat menyarankan agar delegasi tetap diaktifkan karena manfaatnya bagi baterai dan memori perangkat, Anda dapat memilih untuk tidak menggunakan perilaku ini dengan salah satu cara berikut:

  • Pada basis tingkat aplikasi: di manifes aplikasi Anda, tambahkan perintah <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>.
  • Pada basis instance aplikasi: Untuk instance aplikasi, tetapkan fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> dalam alur UI untuk aplikasi Anda, yang bergantung pada kasus penggunaan tertentu.
  • Pada basis per pesan: Tetapkan kunci proxy ke DENY di objek AndroidNotification untuk permintaan kirim.

Mengukur penurunan prioritas pesan di Android

  • Pesan Perorangan. Saat pengiriman, Anda dapat menentukan apakah pesan tertentu prioritasnya diturunkan atau tidak dengan membandingkan prioritas pengirimannya, dari getPriority(), dengan prioritas aslinya, dari getOriginalPriority().

  • Semua Pesan. FCMA ggregate Delivery Data API dapat melaporkan persentase dari semua pesan Anda ke Android yang diturunkan prioritasnya. Beberapa pesan mungkin dihilangkan dari laporan data gabungan, tetapi secara keseluruhan pesan tersebut harus memberikan tampilan global dari tingkat penurunan prioritas pesan. Lihat artikel kami tentang data pengiriman gabungan untuk mengetahui informasi lebih lanjut dan kode contoh untuk membuat kueri API; API ini juga dapat dilihat dari APIs Explorer.

  • Notifikasi yang di-Proxy-kan. Notifikasi yang di-proxy-kan tidak akan dihitung dalam metrik pengiriman FCM atau GA saat ini, sehingga Anda mungkin mengalami penurunan hingga 15% dalam metrik pengiriman notifikasi. Untuk pelaporan pesan yang di-proxy-kan, gunakan FCM Aggregate Delivery Data API. ProxyNotificationInsightPercents melaporkan persentase notifikasi yang berhasil di-proxy-kan serta rincian pesan yang tidak berhasil di-proxy-kan.

Memecahkan Masalah Keterlambatan Notifikasi

  • Pastikan bahwa instance aplikasi Anda telah mengaktifkan notifikasinya. Jika pengguna telah menonaktifkan izin notifikasi untuk aplikasi Anda, tidak ada notifikasi yang akan diposting, sehingga pesan Anda akan diturunkan prioritasnya. Anda harus memverifikasi bahwa notifikasi telah diaktifkan sebelum mengirim pesan berprioritas tinggi ke instance aplikasi.

  • Hindari melakukan panggilan jaringan tambahan saat memproses notifikasi. Karena sebagian kecil populasi seluler Android menggunakan jaringan latensi tinggi, jangan buka koneksi ke server Anda sebelum menampilkan notifikasi. Memanggil kembali ke server sebelum akhir waktu pemrosesan yang diizinkan bisa berisiko bagi pengguna yang berada di jaringan latensi tinggi.

    Sebagai gantinya, sertakan konten notifikasi dalam pesan FCM dan segera tampilkan. Jika harus melakukan sinkronisasi untuk konten tambahan dalam aplikasi di Android, Anda dapat menjadwalkan tugas dengan WorkManager untuk menanganinya di latar belakang.