Не удалось запустить код восстановления состояния для BLE на iOS

Я пытаюсь заставить свое приложение реагировать на повторное рассмотрение в фоновом режиме - это ответ на обнаружение рекламной периферии.

Следующий код в настоящее время работает в моем приложении (на переднем плане + фон, даже после многих часов фонирования):

[self.centralManager scanForPeripheralsWithServices:self.services options:nil];

Как правило, у моего приложения нет ожидающих запросов на соединение, так как я хочу отсканировать новые рекламные объявления в фоновом режиме. Следующая документация заставляет меня поверить, что это все еще возможно:

важно иметь в виду, что приложение будет перезаписано и восстановлено в том случае, если оно выполняется только в случае определенного события или действия Bluetooth (например, сканирования, подключения или подписной характеристики уведомления), и это событие произошло. (от https://developer.apple.com/library/content/qa/qa1962/_index.html)

а также

Система отслеживает... Службы, которые просматривал центральный менеджер (и любые параметры сканирования, указанные при запуске сканирования) (из https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html)

Реализация

Я следую шагам, изложенным в этой последней ссылке ^ в разделе "Добавление поддержки государственного сохранения и восстановления", выполняя следующие действия:

  1. Проигрывание центрального менеджера по указанию:

    self.centralManager = [[CBCentralManager alloc] initWithDelegate: self queue: nil options: @{CBCentralManagerOptionRestoreIdentifierKey: @"myCentralManagerIdentifier"}];

  2. Восстановите свой центральный и периферийный менеджеры

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

  1. Реализация функции восстановления:

    (void) centralManager: (CBCentralManager *) central willRestoreState: (NSDictionary *) state {//Точка останова, установленная здесь, но никогда не достигнутая... NSLog (@"..."); }

Как я проверяю сохранение/восстановление состояния

Я установил точку останова в функции восстановления (с шага 3), а также вставил NSLog.

Нажимая "stop", как было предложено в разделе " Как запустить сохранение и восстановление состояния ядра Bluetooth", я надеялся, что я смогу запустить код с помощью рекламы с помощью своего периферийного устройства, как обычно, (это открытие/поток соединений отлично работает, когда приложение работает в фоновом режиме). Но ничего действительно не получается, что я могу сказать.

Мой общий вопрос: почему контрольная точка не запускается /NSLogs не печатается? Есть ли предпочтительный способ отладки функции восстановления?

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