Jeśli chcesz wysyłać FCM wiadomości do aplikacji przed odblokowaniem urządzenia, możesz włączyć tryb bezpośredniego uruchamiania. Na przykład jeśli chcesz, aby użytkownicy Twojej aplikacji otrzymywali powiadomienia o alarmie nawet na zablokowanym urządzeniu.
Podczas tworzenia tego przypadku użycia przestrzegaj ogólnych sprawdzonych metod i ograniczeń dotyczących trybu bezpośredniego uruchamiania. Ważne jest, aby wziąć pod uwagę widoczność wiadomości włączonych w trybie bezpośredniego rozruchu. Każdy użytkownik, który ma dostęp do urządzenia, może wyświetlać te wiadomości bez podawania danych logowania.
Wymagania wstępne
- Urządzenie musi być skonfigurowane w trybie bezpośredniego uruchamiania.
- Na urządzeniu musi być zainstalowana najnowsza wersja Usług Google Play (19.0.54 lub nowsza).
- Aplikacja musi korzystać z pakietu SDK FCM (
com.google.firebase:firebase-messaging
), aby otrzymywać wiadomości FCM.
Włącz obsługę wiadomości w trybie bezpośredniego uruchamiania w aplikacji
W pliku Gradle na poziomie aplikacji dodaj zależność od FCMbiblioteki obsługującej bezpośrednie uruchamianie:
implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
Spraw, aby aplikacja
FirebaseMessagingService
obsługiwała bezpośrednie uruchamianie, dodając atrybutandroid:directBootAware="true"
w pliku manifestu aplikacji:<service android:name=".java.MyFirebaseMessagingService" android:exported="false" android:directBootAware="true"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
Ważne jest, aby to FirebaseMessagingService
mogło działać w trybie bezpośredniego uruchamiania. Możesz to sprawdzić, korzystając z tych wymagań:
- Usługa nie powinna uzyskiwać dostępu do pamięci chronionej przez dane logowania, gdy jest uruchomiona w trybie bezpośredniego uruchamiania.
- Usługa nie powinna próbować używać komponentów, takich jak
Activities
,BroadcastReceivers
ani innychServices
, które nie są oznaczone jako obsługujące bezpośrednie uruchamianie, gdy działa w trybie bezpośredniego uruchamiania. - Żadne biblioteki używane przez usługę nie mogą też uzyskiwać dostępu do pamięci chronionej przez dane logowania ani wywoływać komponentów nieobsługujących trybu bezpośredniego rozruchu, gdy usługa działa w tym trybie. Oznacza to, że wszystkie biblioteki używane przez aplikację, które są wywoływane z usługi, muszą być przystosowane do bezpośredniego uruchamiania lub aplikacja musi sprawdzać, czy działa w trybie bezpośredniego uruchamiania, i nie wywoływać ich w tym trybie. Na przykład pakiety SDK Firebase działają w trybie bezpośredniego uruchamiania (można je uwzględnić w aplikacji bez powodowania jej awarii w tym trybie), ale wiele interfejsów API Firebase nie obsługuje wywoływania w trybie bezpośredniego uruchamiania.
- Jeśli aplikacja korzysta z niestandardowego
Application
, musi on też obsługiwać bezpośrednie uruchamianie (w trybie bezpośredniego uruchamiania nie ma dostępu do pamięci chronionej hasłem).Application
Wysyłanie wiadomości z włączonym bezpośrednim uruchamianiem
Wiadomości do urządzeń w trybie bezpośredniego uruchamiania możesz wysyłać za pomocą interfejsu HTTP v1 API.
Żądanie wysłania wiadomości musi zawierać klucz "direct_boot_ok": true
w AndroidConfig
opcjach treści żądania. Przykład:
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,
},
}