Jeśli chcesz wysyłać wiadomości FCM do aplikacji, zanim urządzenie zostanie odblokowane, możesz włączyć tryb bezpośredniego uruchamiania. Na przykład jeśli chcesz, aby użytkownicy aplikacji otrzymywali powiadomienia o alarmach 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 z włączonym bezpośrednim uruchamianiem. Każdy użytkownik mający dostęp do urządzenia może wyświetlać te wiadomości bez podawania danych logowania.
Wymagania wstępne
- Urządzenie musi być skonfigurowane do trybu bezpośredniego uruchamiania.
- Na urządzeniu musi być zainstalowana najnowsza wersja Usług Google Play (19.0.54 lub nowsza).
- Aplikacja musi używać pakietu SDK FCM (
com.google.firebase:firebase-messaging), aby otrzymywać wiadomości FCM.
Włączanie obsługi wiadomości w trybie bezpośredniego uruchamiania w aplikacji
W pliku Gradle na poziomie aplikacji dodaj zależność od biblioteki obsługi bezpośredniego uruchamiania FCM:
implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'Ustaw komponent
FirebaseMessagingServiceaplikacji jako obsługujący bezpośrednie uruchamianie, dodając atrybutandroid:directBootAware="true"w manifeście 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 ta aplikacja (FirebaseMessagingService) mogła 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 danymi logowania, gdy działa w trybie bezpośredniego uruchamiania.
- Usługa nie powinna próbować używać komponentów takich jak
Activities,BroadcastReceiversani innychServices, które nie są oznaczone jako obsługujące bezpośredni rozruch, gdy działa w trybie bezpośredniego rozruchu. - Żadne biblioteki używane przez usługę nie mogą mieć dostępu do pamięci chronionej danymi logowania ani wywoływać komponentów, które nie obsługują bezpośredniego uruchamiania, gdy działają w trybie bezpośredniego uruchamiania. Oznacza to, że wszystkie biblioteki używane przez aplikację, które są wywoływane z usługi, muszą obsługiwać bezpośrednie uruchamianie 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ą z bezpośrednim uruchamianiem (można je uwzględnić w aplikacji bez powodowania jej awarii w trybie bezpośredniego uruchamiania), ale wiele interfejsów API Firebase nie obsługuje wywoływania w trybie bezpośredniego uruchamiania.
- Jeśli aplikacja używa niestandardowego elementu
Application, elementApplicationrównież musi obsługiwać bezpośrednie uruchamianie (brak dostępu do pamięci chronionej danymi logowania w trybie bezpośredniego uruchamiania).
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 wiadomości musi zawierać klucz "direct_boot_ok": true w opcjach AndroidConfig treści żądania. Na 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,
},
}