Flutter: Расписание аудио событий для фонового выполнения - PullRequest
1 голос
/ 07 апреля 2019

Я внедряю приложение во Flutter, для которого мне нужно заранее запланировать (аудио) события.Только после завершения одного события я могу запланировать следующее, так как продолжительность события может быть неизвестна ранее.Каждое звуковое событие является звуком уведомления для пользователя, поэтому планирование и воспроизведение звука должны работать, когда приложение не имеет фокуса или телефон заблокирован.

В настоящее время я не могу реализовать эти спецификации, и я полагаю, чтопросто не думаю, что сейчас правильно.С тех пор, как я недавно начал изучать Флаттер, с моей стороны также могут быть некоторые простые недоразумения.Позвольте мне обобщить то, что я знаю о фоновом выполнении и собственном коде во Flutter, пожалуйста, исправьте что-то не так с этими утверждениями:

  • Когда приложение теряет фокус (или телефон блокируется), выполнение кода останавливается.
  • Однако внутри «основного» Dart-кода я могу создать изолятор, который будет работать даже при заблокированном телефоне или без фокусировки на приложении.
  • Разные изоляты вообще не разделяют память;они связываются через порты.
  • Там порожденный изолят ничего не знает об экосистеме флаттера, поэтому невозможно использовать плагины флаттера.
  • По тем же причинам я не могу использовать MethodChannelsа также для связи с кодом платформы из изолята.

Из этого я заключаю:

  • Событие должно быть запланировано из отдельного Dart-изолята, поэтомуэта блокировка телефона не остановит планирование.
  • Этот изолятор не сможет воспроизводить аудиофайл сам по себе и не сможет обмениваться данными с кодом платформы.
  • Таким образом, он должен общаться с первичным изолятором, который может воспроизводить аудио.Однако без открытого приложения код не будет отвечать.
  • Следовательно, этот подход не может работать?

Сейчас я застрял на этом этапе и не знаюкак продолжить.Я предполагаю, что одним из вариантов может быть прямой вызов кода Java / SWIFT для соответствующих платформ и обработка расписания и звука там.Тем не менее, я надеюсь, что сейчас просто не вижу более простого варианта.

...