2016-10-18 3 views
0

Zur Zeit arbeiten mit einer App, in der Bedarf Hintergrundscan für Peripheriegeräte zählt. Wir müssen den Duplizierungsschlüssel zulassen, während das Scannen für das Peripheriegerät initialisiert wird.iOS BLE-Peripherie-Scan, wenn App im Hintergrund oder Telefon im Sperrzustand ist

Ich hatte eine Beispiel-App zum Experimentieren darüber geschrieben. Ich habe die Hintergrundfunktionen in meiner App für endliches Sate Running aktiviert. Ich habe festgestellt, dass die Anzahl der Treffer in Discover Peripheral Delegate-Methode sehr wenig ist, wenn App Hintergrund ist. Noch weniger, wenn sich das Telefon im Sperrzustand befindet. Und die Anzahl der Treffer ist zu unterschiedlichen Zeiten für denselben App-Status unterschiedlich. Außerdem haben wir ein Problem beim Verbindungsaufbau festgestellt, wenn sich das Telefon im Sperrbildschirm befindet oder die App im Hintergrund ist.

Ist dies ein erwartetes Verhalten? Habe ich etwas vergessen?

Jede Hilfe wird geschätzt.

Antwort

0

Die Dokumentation sagt, dass:

Wenn Ihre iOS-App im Hintergrund oder in einem schwebenden Zustand ist, werden seine Bluetooth bezogenen Fähigkeiten beeinträchtigt. [...] Auch wenn Sie einen oder beide der Hintergrundausführungsmodi deklarieren, werden bestimmte Bluetooth-Aufgaben unterschiedlich ausgeführt, während sich Ihre App im Hintergrund befindet. Sie möchten diese Unterschiede berücksichtigen, wenn Sie Ihre App entwerfen.

Auch Apps, die die Hintergrundverarbeitung unterstützen, können vom System jederzeit beendet werden, um Speicher für die aktuelle Vordergrund-App freizugeben. Ab iOS 7 unterstützt Core Bluetooth das Speichern von Statusinformationen für zentrale und periphere Managerobjekte und das Wiederherstellen dieses Status zum Zeitpunkt des Starts der App. Sie können diese Funktion verwenden, um langfristige Aktionen mit Bluetooth-Geräten zu unterstützen. - Source

Wenn alle Anwendungen, die für Peripheriegeräte scannen sind im Hintergrund, das Intervall, in dem Ihr zentrales Gerät sucht nach Werbepakete erhöht. Daher kann es länger dauern, ein Werbe-Peripheriegerät zu finden. - Source

Ihre Anwendung ist in der Lage, wenn im Hintergrund zu scannen, wenn es in der plist erklärt, aber mit begrenzten Leistung/Leistungsbatterie zu schonen, und es kann möglicherweise durch das System getötet werden.

Nicht sicher darüber, aber ich denke, Verbindung ist unmöglich, wenn das Telefon gesperrt ist. Sie können nur vorherige Verbindungen wiederherstellen.

Es gibt weitere Informationen über Hintergrund-Bluetooth-Operationen in here.

+0

Ich würde gerne wissen, wie wir die staatliche Wiederherstellung implementieren können. Ich bekomme immer Nil für dict [CBCentralManagerRestoredStatePeripheralsKey] in Willrestorestate Delegate-Methode. Verwenden des Wiederherstellungsschlüssels beim Initialisieren von central in der App – user2854325

+0

Haben Sie den 'CBCentralManagerOptionRestoreIdentifierKey' bei der Initialisierung Ihrer Zentrale gesetzt? – Crazyrems

+0

Ist dies der richtige Weg, um den Wiederherstellungsschlüssel zu definieren: NSString * CBCentralManagerRestoredStatePeripheralsKey = @ "somestring"; – user2854325

Verwandte Themen