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
Dalam file Gradle tingkat aplikasi, tambahkan dependensi pada support library booting langsung FCM:
implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
Buat agar
FirebaseMessagingService
aplikasi Anda dapat mendeteksi booting langsung dengan cara menambahkan atributandroid: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
, atauServices
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,
},
}