Базовое сохранение и восстановление состояния Bluetooth не работает, не могу перезапустить приложение в фоновом режиме

Я пытаюсь заставить ядро bluetooth разбудить приложение, даже когда оно не работает.

Как заявляет Apple, «поскольку сохранение состояния и восстановление встроено в Core Bluetooth, ваше приложение может включить эту функцию, чтобы попросить систему сохранить состояние центральных и периферийных менеджеров вашего приложения и продолжить выполнение определенных задач, связанных с Bluetooth, на от их имени, даже когда ваше приложение больше не работает. Когда одна из этих задач завершается, система перезапускает ваше приложение в фоновом режиме и дает вашему приложению возможность восстановить его состояние и соответствующим образом обработать событие ».

Я добавил следующий код, чтобы включить эту функцию:

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

Но обратные вызовы, когда приложение проснулось, никогда не срабатывали.

-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

-(void)centralManager:(CBCentralManager *)central
      willRestoreState:(NSDictionary *)state {
}

Эти двое никогда не называются.

То, как я тестирую эту функцию пробуждения:

Я добавляю «bluetooth central» в фоновом режиме в info.plist, чтобы BLE работал в фоновом режиме.

Запустите CentralManager в моем iphone № 1. начать сканирование.

нажмите home и выйдите, поиграйте в какую-нибудь тяжелую память, в журнале отладки я увижу: «Завершено из-за нехватки памяти. Процесс завершен с кодом выхода 0». Это для имитации того, как система ios завершает работу фонового приложения из-за нехватки памяти.

запустить маяк с другого iphone № 2 и начать вещание.

результат: эти повторные обратные вызовы никогда не будут вызваны.

Есть идеи, почему это не работает? Если это проблема API, есть ли другой способ перезапустить ваше приложение в фоновом режиме с BLE, когда ваш телефон приближается к маяку BLE? Я пробовал использовать ibeacon для запуска приложения, но центральный менеджер ядра Bluetooth не позволит вам подключиться к ibeacon в фоновом режиме.

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос