Подключиться к Bluetooth CBPeripheral после перезапуска приложения - PullRequest
0 голосов
/ 24 октября 2018

У меня есть устройство Bluetooth.Как только я подключусь к нему, я хочу подключиться к нему в фоновом режиме.Проблема в том, что я не знаю, как я могу подключиться к устройству после того, как пользователь принудительно покинул приложение (даже после запуска нового приложения)

Что у меня есть: устройство Bluetooth без служб в рекламных данных.

Поскольку в нем нет рекламных данных, я не могу искать периферийные устройства со службами в фоновом режиме.Так что для исключения фона мне нужно вызвать centralManager.connect ()

Если приложение закрывается из-за проблемы с памятью или чего-то подобного, я могу восстановить все в centralManager метод делегирования willRestoreState dict содержит периферийное устройство, которое я могу получить с помощью CBCentralManagerRestoredStatePeripheralsKey .(Также я реализовал, чтобы получить UIApplicationLaunchOptionsKey.bluetoothCentrals из launchOptions в willFinishLaunchingWithOptions

Проблема

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

Все, что я хочу, - это если пользователь перезапустит приложение, чтобы восстановить мой CBPeripheral. ПослеЯ мог бы снова вызвать centralManager.connect (периферийное устройство).

дополнительная информация

Я сохраняю uuid периферийного устройства (периферическое.identifier.uuidString) в NSUserDefault Data.

Идеи

  • Я думал о создании CBPeripheral объекта с информацией об устройстве. Если я прочитал все правильно, это невозможно.
  • Если я сохраню CBPeripheral в Core Data, я не знаю, что будетпроизойдет, если Apple изменит API CBPeripherals, вероятно, это будет плохая идея.
  • В некотором смысле Apple может сделать снимок CBPeriphEral.Можно ли активировать этот снимок, чтобы можно было восстановить периферийное устройство с помощью UIApplicationLaunchOptionsKey.bluetoothCentrals и CBCentralManagerRestoredStatePeripheralsKey каждый раз?

1 Ответ

0 голосов
/ 24 октября 2018

Объект CBPeripheral, к которому вы подключались в первую очередь, будет иметь свойство идентификатора.Вам следует сохранить этот идентификатор на диске, чтобы вы могли загрузить его снова после запуска приложения в более позднее время.Затем, после создания нового экземпляра CBCentralManager, вы вызываете метод retrievePeripheralsWithIdentifiers: менеджера (с идентификатором, который вы загрузили ранее), чтобы снова извлечь объект CBPeripheral.На этом этапе вы можете подключить периферийное устройство, как вы делали это раньше.

...