Поток пульса в фоновом режиме бесконечно?

К моему приложению подключено устройство для измерения частоты сердечных сокращений, которое обеспокоено потерей частоты сердечных сокращений в различных сценариях.

Когда приложение находится на переднем плане, я передаю данные о частоте сердечных сокращений и сохраняю их в сторонней базе данных. Это легкая часть.

Ситуация усложняется, когда приложение уходит в фоновый режим во время работы пользователя и т. Д., А частота сердечных сокращений все еще увеличивается. Файловая система становится зашифрованной, поэтому я не могу записать в базу данных, поэтому моя идея состоит в том, чтобы добавить частоту сердечных сокращений в текстовый файл, а затем перенести их в базу данных, когда приложение вернется на передний план.

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

Для такой, казалось бы, простой задачи это становится еще сложнее. Мне приходится иметь дело с Core Bluetooth и следить за тем, чтобы соединение оставалось открытым, но я не могу себе представить, что iOS позволит приложению бесконечно долго прослушивать пульсометр. В какой-то момент приложение будет остановлено, но что происходит с потоком сердечного ритма?

Есть ли проверенный способ обрабатывать пульс на фоне бесконечно? Любой совет или опыт будут с благодарностью!

1 ответ

Решение

блютуз

iOS поддерживает запуск определенных типов приложений в фоновом режиме. В этом режиме соединение Bluetooth будет поддерживаться. Мониторы сердечного ритма - это один из типов приложений, упомянутых в документации разработчика:

Эта поддержка важна для некоторых типов аксессуаров, которые доставляют данные через регулярные промежутки времени, таких как мониторы сердечного ритма. Вы включаете поддержку внешних аксессуаров связи из раздела Фоновые режимы на вкладке Возможности в вашем проекте XCode. При включении этого режима внешняя структура аксессуаров не закрывает активные сеансы с аксессуарами.

См. Раздел " Выполнение в фоновом режиме " в руководстве по программированию для iOS.

Регистрация данных

Хранение записей журнала в виде отдельных файловых узлов может привести к снижению производительности. В идеале вы должны иметь возможность записи в базу данных, пока приложение работает в фоновом режиме.

Другой вариант - добавить образцы в текстовый файл, затем прочитать файл построчно и импортировать его в базу данных. Использование одного файла для регистрации более эффективно, чем многие тысячи отдельных файлов. Если вас беспокоит размер файла, простой способ разбить файл - использовать текущую дату и время в качестве имени файла. Например: формат "год-месяц-день-час-минуты" будет создавать новый файл для каждой минуты, и каждый файл будет уникальным.

Если в файл записывается несколько процессов (например, если файл находится в контейнере общего приложения), вы можете использовать NSFileCoordinator чтобы предотвратить состояние гонки и обеспечить целостность файла.

Если вы используете защиту диска, вам может потребоваться изменить режим защиты файла для файла журнала (или базы данных), чтобы обеспечить возможность его записи. Установите режим защиты файлов в 'none' с помощью NSFileManager.defaultManager().setAttributes(:ofItemAtPath),

См. Раздел " Стратегии конфиденциальности " руководства по программированию для iOS.

Другие вопросы по тегам