Odbieranie wiadomości FCM w trybie bezpośredniego rozruchu

Jeśli chcesz wysyłać FCM wiadomości do aplikacji, zanim urządzenie zostanie odblokowane, możesz włączyć tryb bezpośredniego uruchamiania. Na przykład jeśli chcesz, aby użytkownicy Twojej 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 włączonych w trybie bezpośredniego uruchamiania. 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 używać pakietu FCM SDK (com.google.firebase:firebase-messaging) do odbierania FCM wiadomości.

Włącz obsługę wiadomości w trybie bezpośredniego uruchamiania w swojej aplikacji

  1. 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'
    
  2. Aby usługa FirebaseMessagingService aplikacji była obsługiwana w trybie bezpośredniego uruchamiania, dodaj atrybut android: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 usługa 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, BroadcastReceivers czy inne Services, które nie są oznaczone jako obsługiwane w trybie bezpośredniego uruchamiania, gdy działa w tym trybie.
  • Biblioteki używane przez usługę również nie mogą uzyskiwać dostępu do pamięci chronionej danymi logowania ani wywoływać komponentów nieobsługiwanych w trybie bezpośredniego uruchamiania, 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ć obsługiwane w trybie bezpośredniego uruchamiania lub aplikacja musi sprawdzać, czy działa w tym trybie, i nie wywoływać ich w tym trybie. Na przykład pakiety Firebase SDK działają w trybie bezpośredniego uruchamiania (można je uwzględnić w aplikacji bez powodowania awarii w tym trybie), ale wiele interfejsów Firebase API nie obsługuje wywoływania w trybie bezpośredniego uruchamiania.
  • Jeśli aplikacja używa niestandardowego elementu Application, musi on być również obsługiwany w trybie bezpośredniego uruchamiania (bez dostępu do pamięci chronionej danymi logowania w tym trybie).Application

Wysyłanie wiadomości włączonych w trybie bezpośredniego uruchamiania

Wiadomości możesz wysyłać na urządzenia w trybie bezpośredniego uruchamiania za pomocą interfejsu HTTP v1 API.

Prośba o rozpoczęcie czatu musi zawierać klucz "direct_boot_ok": true w AndroidConfig opcjach w 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,
    },
}