Любой способ сделать так, чтобы локальное уведомление о трепетании сохраняло звук, воспроизводимый в 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,
      ...
    );
  }
Другие вопросы по тегам