Поддерживать работу моего приложения flutter в фоновом режиме с уведомлением - PullRequest
0 голосов
/ 09 мая 2020

Я разрабатывал приложение Flutter для пилотов планеров в течение последних нескольких недель.

Принцип прост: определять, когда пилот взлетает и когда он приземляется, а затем сохранять эти данные для дальнейшего использования. Обнаружение запускается, когда пользователь нажимает RaisedButton, и оно работает следующим образом:

1. Проверьте путевую скорость, если она не выше определенного предела, подождите 30 секунд и go вернитесь к 1. В противном случае, продолжайте.

2. Проверьте вертикальную скорость, если не выше определенного предела, подождите 30 секунд и go вернитесь к 1. В противном случае устройство считается летящим, поэтому текущее время сохраняется в переменной и попробуйте определить приземление (3).

3. Если путевая скорость выше 0, подождите 30 секунд и go вернитесь к 3. В противном случае продолжайте.

4. Проверьте вертикальную скорость, если она равна 0, значит, приземление произошло, текущее время сохраняется. В противном случае подождите 30 секунд и go вернитесь к 3.

5. Верните время взлета и посадки.

Работает хорошо. Но только тогда, когда приложение запущено. Очевидно, что когда приложение закрывается, процесс останавливается, как и обнаружение. Чтобы избежать выхода пользователя из приложения при попытке обнаружить полет, я обернул приложение в WillPopScope, который возвращает всплывающее окно подтверждения всякий раз, когда пользователь нажимает кнопку «Назад», если обнаружение все еще выполняется.

Но когда пользователь переключается на другое приложение, процесс продолжается в течение некоторого случайного времени, а затем он прерывается ОС.

Я читал несколько статей на носителе вроде этой: https://medium.com/stuart-engineering/%EF%B8%8F-the-tricky-task-of-keeping-flutter-running-on-android-2d51bbc60882 но я не знаю, нужно ли мне это делать (и на самом деле я не совсем понимаю это).

Я хотел бы сделать что-то вроде приложения Messenger от Facebook: отображать постоянное уведомление, чтобы сохранить приложение работает и определяет время полета, когда пользователь заблокировал экран или использует другое приложение. У меня есть другой пример приложения, которое делает это: XCSoar (это приложение для GPS-навигации, которое также не может быть убито во время полета, и есть уведомление, как в Messenger).

Я хотел бы знаю, можно ли это сделать как для Android, так и для iOS. Я планирую развернуть приложение на обеих платформах. Но пока, если это работает для Android, все в порядке.

Спасибо за вашу помощь!

...