Если вы хотите отправлять FCM -сообщения приложениям до разблокировки устройства, вы можете включить режим прямой загрузки. Например, если вы хотите, чтобы пользователи вашего приложения получали уведомления о тревоге даже на заблокированном устройстве.
При разработке этого сценария использования следует соблюдать общие рекомендации и ограничения для режима прямой загрузки. Важно учитывать видимость сообщений, отображаемых в режиме прямой загрузки. Любой пользователь, имеющий доступ к устройству, может просматривать эти сообщения без ввода учетных данных.
Предварительные требования
- Устройство необходимо настроить на режим прямой загрузки.
- На устройстве должна быть установлена последняя версия сервисов Google Play (19.0.54 или более поздняя).
- Для приема сообщений FCM приложение должно использовать SDK FCM (
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, во время работы в режиме прямой загрузки. Это означает, что любые библиотеки, используемые приложением и вызываемые из сервиса, либо должны поддерживать DirectBootAware, либо приложение должно проверять, работает ли оно в режиме прямой загрузки, и не вызывать их в этом режиме. Например, SDK Firebase работают с DirectBoot (их можно включить в приложение, не вызывая сбоев в режиме прямой загрузки), но многие API Firebase не поддерживают вызов в режиме прямой загрузки.
- Если приложение использует собственное
Application,Applicationтакже должно поддерживать прямую загрузку (в режиме прямой загрузки доступ к хранилищу, защищенному учетными данными, должен быть закрыт).
Отправляйте прямые сообщения, активируемые при загрузке.
Вы можете отправлять сообщения на устройства в режиме прямой загрузки, используя API HTTP v1 .
В запросе сообщения необходимо указать ключ "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,
},
}