Я пытаюсь отправить push-уведомление, когда приложение убито, но устройство получает уведомление только при запуске приложения.
У меня есть:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setLightColor(Color.BLUE);
notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.createNotificationChannel(notificationChannel);
}
}
и для создания уведомления:
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(context, channelId)
.setSmallIcon(smallIconRes)
.setContentTitle(title)
.setContentText(body)
.setStyle(new NotificationCompat.BigTextStyle().bigText(body))
.setPriority(NotificationCompat.PRIORITY_MAX)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_VIBRATE)
.setColor(ContextCompat.getColor(context, notificationColor))
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.notify(id, notificationBuilder.build());
}
Функция Firebase просто делает это:
var options = {
priority: "high",
timeToLive: 60 * 60 * 24
};
const payload = {
"notification":{
"title":`${notifiTitle}`,
"body":`${notifiBody}`,
"click_action":".MainActivity",
"sound":"default"
}
};
return admin.messaging().sendToDevice(snapshot.val(), payload, options);
Я пытаюсь с "Lenovo Moto G5S Plus XT1805", Android 8.1.0, и у меня нет проблем.Устройство получает уведомление, как когда приложение закрыто, так и когда оно открыто.Хорошо!
Проблема с другим устройством, "Lenovo Tablet TB-X103X", Android 7.0.Это устройство получает уведомление, только если приложение запущено!Когда приложение убито, не получает уведомление.Жду 1 час, открываю приложение и приходит уведомление.Я не знаю, если это проблема с режимом DOZE, я отправляю уведомление с высоким приоритетом с функциями firebase.Или это конфигурация LENOVO для своих планшетов.
Я пытаюсь добавить разрешение запроса:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
, но безрезультатно!
Может ли кто-нибудь мне помочь?
Спасибо!