Любой способ сделать так, чтобы локальное уведомление о трепетании сохраняло звук, воспроизводимый в Android, если уведомление не нажато?
Посмотрел в сети, предлагалось установить
additionalFlags
вариант
AndroidNotificationDetails
иметь значение 4.
Это то, что я сделал
AndroidNotificationDetails(
'notif',
'notif',
'Notification',
icon: '@mipmap/launcher',
priority: Priority.high,
sound: RawResourceAndroidNotificationSound('notif'),
largeIcon: DrawableResourceAndroidBitmap('@mipmap/launcher'),
additionalFlags: Int32List.fromList(<int>[4]),
importance: Importance.max,
playSound: true,
);
Но в тот момент, когда я смахиваю вниз, чтобы увидеть список уведомлений, звук перестает воспроизводиться. Я хочу, чтобы звук продолжал воспроизводиться, пока я не нажму на это конкретное уведомление (а не просто проведу пальцем вниз, чтобы увидеть список уведомлений)?
1 ответ
Вы можете сохранить звук (или, в данном примере, сигнал тревоги), используя insistentFlag и флаг androidAllowWhileIdle.
В приведенном ниже примере используются локальные уведомления Flutter v.12.
static Future<void> showFullScreenNotification(
Alarm alarm, tz.TZDateTime date) async {
const int insistentFlag = 4;
final Int64List vibrationPattern = Int64List(4);
vibrationPattern[0] = 0;
vibrationPattern[1] = 4000;
vibrationPattern[2] = 4000;
vibrationPattern[3] = 4000;
AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails(
alarm.id.toString(),
'scheduled_alarm_channel',
channelDescription: 'scheduled_alarm',
priority: Priority.high,
importance: Importance.high,
additionalFlags: Int32List.fromList(<int>[insistentFlag]),
playSound: true,
audioAttributesUsage: AudioAttributesUsage.alarm,
vibrationPattern: vibrationPattern,
);
NotificationDetails details =
NotificationDetails(android: androidPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.zonedSchedule(
...
date,
androidAllowWhileIdle: true,
...
);
}