Grundlegende Bluetooth-Statuserhaltung und -wiederherstellung funktioniert nicht, App kann nicht im Hintergrund neu gestartet werden

Ich versuche, Core Bluetooth zu aktivieren, auch wenn es nicht läuft.

Wie Apple erklärte: "Da die Statuserhaltung und -wiederherstellung in Core Bluetooth integriert ist, kann Ihre App diese Funktion aktivieren, um das System aufzufordern, den Status der zentralen und peripheren Manager Ihrer App beizubehalten und bestimmte Bluetooth-bezogene Aufgaben weiterhin auszuführen Auch wenn Ihre App nicht mehr ausgeführt wird. Wenn eine dieser Aufgaben abgeschlossen ist, führt das System einen Neustart Ihrer App im Hintergrund durch und bietet Ihrer App die Möglichkeit, ihren Status wiederherzustellen und das Ereignis entsprechend zu behandeln. "

Ich habe folgenden Code hinzugefügt, um diese Funktion zu aktivieren:

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

Aber die Rückrufe beim Aufwachen der App wurden nie ausgelöst.

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

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

Diese beiden werden nie genannt.

So teste ich diese Weckfunktion:

Ich füge "bluetooth central" im Hintergrundmodus in info.plist hinzu, damit die BLE im Hintergrund läuft.

starte centralManager in meinem iphone No.1. Scan starten.

Drücken Sie nach Hause und steigen Sie aus, spielen Sie ein speicherintensives Spiel. Im Debug-Protokoll wird Folgendes angezeigt: "Beendet aufgrund von Speicherdruck. Vorgang mit Beendigungscode 0 beendet". Dies soll simulieren, wie das iOS-System die Hintergrund-App aufgrund von Speicherdruck beendet.

starte ein leuchtfeuer mit einem anderen iphone no.2 und starte die sendung.

Ergebnis: Diese Relaunch-Callbacks werden nie aufgerufen.

Irgendwelche Ideen, warum das nicht funktioniert? Wenn es sich um ein API-Problem handelt, gibt es eine andere Möglichkeit, Ihre App mit BLE in den Hintergrund zu starten, wenn sich Ihr Telefon dem BLE-Beacon nähert? Ich habe versucht, mit ibeacon die App zu aktivieren, aber mit dem zentralen Bluetooth-Manager können Sie im Hintergrund keine Verbindung zu ibeacon herstellen.

Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage