Menerima pesan FCM dalam mode booting langsung

Jika ingin mengirim pesan FCM ke aplikasi sebelum kunci perangkat dibuka, Anda dapat mengaktifkan mode booting langsung. Misalnya, jika Anda ingin pengguna aplikasi menerima notifikasi alarm meskipun perangkatnya sedang terkunci.

Saat menangani kasus penggunaan ini, ikuti praktik terbaik dan pembatasan umum untuk mode booting langsung. Anda juga harus mempertimbangkan visibilitas pesan dalam mode booting langsung. Setiap pengguna yang memiliki akses ke perangkat dapat melihat pesan ini tanpa memasukkan kredensial pengguna.

Prasyarat

  • Perangkat harus disiapkan untuk mode booting langsung.
  • Layanan Google Play versi terbaru (19.0.54 atau yang lebih baru) harus terinstal di perangkat.
  • Aplikasi harus menggunakan FCM SDK (com.google.firebase:firebase-messaging) untuk menerima pesan FCM.

Mengaktifkan penanganan pesan dalam mode booting langsung di aplikasi

  1. Dalam file Gradle tingkat aplikasi, tambahkan dependensi pada support library booting langsung FCM:

    implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
    
  2. Buat agar FirebaseMessagingService aplikasi Anda dapat mendeteksi booting langsung dengan cara menambahkan atribut android:directBootAware="true" dalam manifes aplikasi:

    <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false"
        android:directBootAware="true">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    

Anda harus memastikan bahwa FirebaseMessagingService ini dapat dijalankan dalam mode booting langsung. Anda dapat memeriksanya dengan persyaratan berikut:

  • Layanan tidak boleh mengakses penyimpanan yang dilindungi kredensial saat dijalankan dalam mode booting langsung.
  • Layanan tidak boleh mencoba menggunakan komponen, seperti Activities, BroadcastReceivers, atau Services lain yang tidak ditandai agar dapat mendeteksi booting langsung saat dijalankan dalam mode booting langsung.
  • Library apa pun yang digunakan oleh layanan ini juga tidak boleh mengakses penyimpanan yang dilindungi kredensial dan tidak boleh memanggil komponen non-directBootAware saat dijalankan dalam mode booting langsung. Artinya, library apa pun yang digunakan aplikasi dan dipanggil dari layanan ini harus dapat mendeteksi booting langsung, atau aplikasi harus memeriksa apakah sedang berjalan dalam mode booting langsung dan tidak memanggil library dalam mode tersebut. Misalnya, Firebase SDK berfungsi dengan booting langsung (dapat disertakan dalam aplikasi tanpa mengalami error dalam mode booting langsung), tetapi banyak Firebase API tidak mendukung pemanggilan dalam mode booting langsung.
  • Jika aplikasi menggunakan Application kustom, Application juga harus dapat mendeteksi booting langsung (tidak memiliki akses ke penyimpanan yang dilindungi kredensial saat mode booting langsung).

Mengirim pesan dalam mode booting langsung

Anda dapat mengirim pesan ke perangkat dalam mode booting langsung menggunakan HTTP v1 API.

Permintaan pesan harus menyertakan kunci "direct_boot_ok": true dalam opsi AndroidConfig dari isi permintaan. Contoh:

https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send
Content-Type:application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
  "message":{
    "token" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data": {
      "score": "5x1",
      "time": "15:10"
    },
    "android": {
      "direct_boot_ok": true,
    },
}