Podstawowe funkcje konserwacji i przywracania stanu Bluetooth Nie działają, Nie można ponownie uruchomić aplikacji w tle

Staram się, aby rdzeń bluetooth obudził aplikację, nawet jeśli nie działa.

Jak stwierdził Apple: „Ponieważ ochrona stanu i przywracanie stanu są wbudowane w Core Bluetooth, aplikacja może włączyć tę funkcję, aby poprosić system o zachowanie stanu centralnych i peryferyjnych menedżerów aplikacji i kontynuowanie wykonywania określonych zadań związanych z Bluetooth. w ich imieniu, nawet gdy aplikacja nie jest już uruchomiona. Gdy jedno z tych zadań zostanie zakończone, system ponownie uruchomi aplikację w tle i da aplikacji możliwość przywrócenia jej stanu i właściwego przeprowadzenia zdarzenia. "

Dodałem następujący kod, aby włączyć tę funkcję:

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

Ale wywołania zwrotne, gdy aplikacja się obudzi, nigdy nie zostały uruchomione.

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

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

Tych dwóch nigdy nie nazywa się.

Sposób, w jaki testuję tę funkcję budzenia:

Dodam „bluetooth central” w trybie tła w info.plist, więc BLE działa w tle.

uruchom centralManager w moim telefonie iPhone nr 1. Rozpocznij skanowanie.

naciśnij przycisk home i wyjdź, zagraj w ciężką grę pamięci, w dzienniku debugowania zobaczę: „Zakończone z powodu ciśnienia pamięci. Proces zakończony kodem wyjścia 0”. Ma to na celu symulację sposobu, w jaki system ios kończy działanie aplikacji w tle z powodu presji pamięci.

uruchom sygnał nawigacyjny z innym telefonem iPhone nr 2 i rozpocznij nadawanie.

wynik: te wywołania zwrotne nigdy nie są wywoływane.

Jakieś pomysły, dlaczego to nie działa? Jeśli jest to problem z interfejsem API, czy jest jakieś inne podejście do ponownego uruchomienia aplikacji w tle za pomocą BLE, gdy telefon zbliża się do radia BLE? Próbowałem użyć ibeacon do wybudzenia aplikacji, ale główny centralny menedżer bluetooth nie pozwala na połączenie z ibeacon w tle.

Dzięki!

questionAnswers(3)

yourAnswerToTheQuestion