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

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

Я хочу, чтобы подключение было активным даже в состоянии background , поэтому я включил режим Background State в Capabilities для Bluetooth . Теперь приложение продолжает получать данные, используя NSNotifications .

Требование и моя работа

Я должен отправить эти данные на наши серверы, для чего я храню данные. в массиве и каждые 10 секунд я делаю вызов API POST для отправить контент, доступный в массиве на наши серверы, и тогда я сброс массива.

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

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

Ref:

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

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

Отправка данных устройства BLE на сервер в фоновом режиме

1 Ответ

1 голос
/ 06 июня 2019

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

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