Если вы хотите отправлять сообщения FCM в приложения до разблокировки устройства, включите режим прямого запуска. Например, если вы хотите, чтобы пользователи вашего приложения получали уведомления о будильнике даже на заблокированном устройстве.
При реализации этого варианта использования соблюдайте общие рекомендации и ограничения для режима прямого запуска. Важно учитывать видимость сообщений, для которых включена прямая загрузка. Любой пользователь с доступом к устройству может просматривать эти сообщения без ввода учетных данных.
Требования
- Устройство должно быть настроено для прямого запуска.
- На устройстве должна быть установлена последняя версия сервисов Google Play (19.0.54 или более поздняя).
- В приложении должен использоваться FCM SDK (
com.google.firebase:firebase-messaging), чтобы получать сообщения FCM.
Как включить обработку сообщений в режиме прямой загрузки в приложении
В файле 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, которые не помечены как поддерживающие прямой запуск, при работе в режиме прямого запуска. - Библиотеки, используемые сервисом, также не должны получать доступ к хранилищу, защищенному учетными данными, и вызывать компоненты, не поддерживающие режим прямого запуска, во время работы в этом режиме. Это означает, что любые библиотеки, которые используются в приложении и вызываются из сервиса, должны поддерживать прямой запуск или приложение должно проверять, запущен ли сервис в режиме прямого запуска, и не вызывать их в этом режиме. Например, пакеты SDK Firebase работают с прямым запуском (их можно включить в приложение без сбоев в режиме прямого запуска), но многие API Firebase не поддерживают вызовы в этом режиме.
- Если приложение использует собственный
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,
},
}