Невозможно через регулярные промежутки времени вызывать фоновый API в IOS для отправки данных, полученных в приложении, с устройства BLE

У меня есть весы от Акайя (периферийный), которые выдают данные о весе со скоростью 5 баллов в секунду. Я использовал Acaias iOS SDK, чтобы создать приложение, которое может подключаться к нему для получения точек данных.

Я хочу сделать соединение активным даже в состоянии задний план, поэтому я включил Режим фонового состояния в возможностях Bluetooth. Теперь приложение продолжает получать данные, используя NS-уведомления.

Requirement and my work

I have to push this data to our servers for that I am storing the Data in an array and at every 10 seconds, I am making an API POST call to push the content available in array to our servers, and then I am resetting the array.

  1. Он работает, как и ожидалось, в состоянии переднего плана приложения.
  2. Журналы API не являются регулярными, когда экран заблокирован или приложение находится в фоновом режиме, что означает, что данные не отправляются через равные промежутки времени.
  3. при переносе приложения из фона на передний план, скажем, через 30 минут приложение зависает и соединение теряется.

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

Ссылка:

https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

https://acaia.co/blogs/news/new-ios-sdk-api-release

Sending BLE device data to server in background

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Фоновая обработка возможна в IOS. Но он должен выполнять только ту работу, для которой он удерживается в фоновом состоянии из приостановленного состояния. Кроме того, я обнаружил, что периферийные устройства BLE, которые постоянно продолжают передавать данные в приложения IOS, не позволяют приложению перейти в приостановленное состояние, и, таким образом, приложение может оставаться в фоновом режиме навсегда, если только IOS не попытается убить его из-за памяти и других проблем. .

  1. Существует возможность запуска приложения в фоновом режиме в Раздел возможностей.
  2. Также убедитесь, что обрабатываются правильные методы периферийных делегатов.
  3. И вызовы API выполняются пакетами. Я предпочел бы сохранить полученные данные из BLE в локальном хранилище в фоновом режиме и всякий раз, когда приложение запускается переднем плане и подключен к Интернету, даст пользователю возможность отправить на сервер.

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