Если вы хотите отправлять FCM -сообщения приложениям до разблокировки устройства, вы можете включить режим прямой загрузки. Например, если вы хотите, чтобы пользователи вашего приложения получали уведомления о тревогах даже на заблокированном устройстве.
При реализации этого сценария использования соблюдайте общие рекомендации и ограничения для режима прямой загрузки. Важно учитывать видимость сообщений, связанных с прямой загрузкой. Любой пользователь, имеющий доступ к устройству, может просматривать эти сообщения без ввода учётных данных.
Предпосылки
- Устройство должно быть настроено для режима прямой загрузки.
- На устройстве должна быть установлена последняя версия сервисов Google Play (19.0.54 или более поздняя).
- Для получения сообщений FCM приложение должно использовать FCM SDK (
com.google.firebase:firebase-messaging
).
Включите обработку сообщений режима прямой загрузки в вашем приложении
В файле Gradle уровня приложения добавьте зависимость от библиотеки поддержки прямой загрузки FCM :
implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
Включите прямую загрузку
FirebaseMessagingService
в приложении, добавив атрибутandroid:directBootAware="true"
в манифест приложения:<service android:name=".java.MyFirebaseMessagingService" android:exported="false" android:directBootAware="true"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
Важно убедиться, что FirebaseMessagingService
может работать в режиме прямой загрузки. Это можно проверить, выполнив следующие требования:
- Служба не должна получать доступ к защищенному хранилищу учетных данных при работе в режиме прямой загрузки.
- Служба не должна пытаться использовать компоненты, такие как
Activities
,BroadcastReceivers
или другиеServices
, которые не помечены как поддерживающие прямую загрузку, при работе в режиме прямой загрузки. - Любые библиотеки, используемые службой, также не должны обращаться к хранилищу, защищённому учётными данными, и вызывать компоненты, не поддерживающие DirectBootAware, при работе в режиме прямой загрузки. Это означает, что любые библиотеки, используемые приложением и вызываемые из службы, либо должны поддерживать прямую загрузку, либо приложение должно проверять, запущено ли оно в режиме прямой загрузки, и не вызывать их в этом режиме. Например, Firebase SDK работают с прямой загрузкой (их можно включить в приложение, не вызывая сбоя в режиме прямой загрузки), но многие Firebase API не поддерживают вызов в режиме прямой загрузки.
- Если приложение использует пользовательское
Application
, тоApplication
также должно поддерживать прямую загрузку (без доступа к защищенному хранилищу учетных данных в режиме прямой загрузки).
Отправлять прямые сообщения с поддержкой загрузки
Вы можете отправлять сообщения на устройства в режиме прямой загрузки, используя HTTP v1 API .
Запрос сообщения должен включать ключ "direct_boot_ok": true
в параметрах AndroidConfig
тела запроса. Например:
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,
},
}