Я пытаюсь сделать базовое 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 центральный» в фоновом режиме в info.plist, так что BLE работает в фоновом режиме.
стартовый центральный менеджер в моем iphone № 1. начать сканирование.
нажмите на дом и выйдите, играйте в тяжелую игру с памятью, в журнале отладки я увижу: «Завершение из-за давления памяти. Процесс завершен с кодом выхода 0». Это должно имитировать, как система ios завершает фоновое приложение из-за давления памяти.
Запустите маячок с другим iphone №2 и начните вещание.
результат: эти возвратные обратные вызовы никогда не вызываются.
Любые идеи, почему это не работает? Если это проблема API, есть ли какой-либо другой подход к возобновлению вашего приложения в фоновом режиме с помощью BLE, когда ваш телефон приближается к маяку BLE? Я попытался использовать ibeacon для пробуждения приложения, но центральный диспетчер bluetooth не позволит вам подключиться к ibeacon в фоновом режиме.
Спасибо!
Спасибо tdevoy, любое обходное решение для перезапуска приложения с помощью BLE? – woof
Здравствуйте, @tdevoy, пожалуйста, любезно разработайте периферийные события. – raghul